Docker Run 명령어 입문 가이드

DockerBeginner
지금 연습하기

소개

이 포괄적인 가이드에서는 Docker 컨테이너를 관리하고 실행하는 기반인 필수적인 Docker run 명령어를 탐구합니다. Docker 에 처음 접하든, 이해를 심화하고자 하든, 이 튜토리얼은 docker run 명령어를 효과적으로 활용하고 Docker 컨테이너의 모든 잠재력을 활용하는 데 필요한 지식과 기술을 제공할 것입니다.

Docker 컨테이너 소개

Docker 는 개발자가 애플리케이션과 종속성을 컨테이너라는 자체 포함 단위로 패키징할 수 있는 인기 있는 컨테이너화 플랫폼입니다. 이러한 컨테이너는 다양한 환경에서 쉽게 배포, 확장 및 관리할 수 있으며, 일관되고 안정적인 애플리케이션 동작을 보장합니다.

Docker 컨테이너란 무엇인가요?

Docker 컨테이너는 애플리케이션 실행에 필요한 모든 것을 포함하는 (코드, 런타임, 시스템 도구, 라이브러리 등) 가볍고 독립적이며 실행 가능한 소프트웨어 패키지입니다. 컨테이너는 애플리케이션을 기본 호스트 시스템에서 분리하여 애플리케이션이 실행되는 일관되고 예측 가능한 환경을 제공합니다.

Docker 컨테이너의 장점

  • 이식성: Docker 컨테이너는 다양한 컴퓨팅 환경 간에 쉽게 이동할 수 있으며, 일관된 애플리케이션 동작을 보장합니다.
  • 확장성: 컨테이너는 변화하는 애플리케이션 요구 사항에 맞춰 빠르게 확장하거나 축소할 수 있습니다.
  • 효율성: 컨테이너는 호스트 운영 체제를 공유하여 기존 가상 머신에 비해 오버헤드를 줄입니다.
  • 일관성: 컨테이너는 기본 인프라에 관계없이 애플리케이션이 동일한 방식으로 실행되도록 보장합니다.

Docker 아키텍처

Docker 는 Docker 클라이언트가 Docker 데몬과 통신하는 클라이언트 - 서버 아키텍처를 사용합니다. Docker 데몬은 Docker 컨테이너를 구축, 실행 및 관리하는 역할을 합니다.

graph LD A[Docker Client] -- API --> B[Docker Daemon] B -- Containers --> C[Docker Images] B -- Volumes --> D[Docker Volumes] B -- Networks --> E[Docker Networks]

Docker 시작하기

Docker 를 시작하려면 시스템에 Docker 엔진을 설치해야 합니다. 공식 Docker 웹사이트 (https://www.docker.com/get-started) 에서 Docker 를 다운로드하여 설치할 수 있습니다. 설치 후 docker 명령줄 인터페이스를 사용하여 Docker 데몬과 상호 작용하고 컨테이너를 관리할 수 있습니다.

Docker Run 명령어 시작하기

docker run 명령어는 Docker 에서 컨테이너를 시작하고 관리하는 주요 방법입니다. 이 명령어를 사용하여 Docker 이미지에서 새로운 컨테이너를 생성하고 실행할 수 있습니다.

기본 Docker Run 명령어

docker run 명령어의 기본 구문은 다음과 같습니다.

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

간단한 Nginx 웹 서버 컨테이너를 실행하는 예는 다음과 같습니다.

docker run -d -p 80:80 --name my-nginx nginx:latest

이 명령어는 다음과 같습니다.

  • -d: 컨테이너를 분리 모드 (백그라운드) 로 실행
  • -p 80:80: 호스트 포트 80 을 컨테이너 포트 80 으로 매핑
  • --name my-nginx: 컨테이너에 이름 "my-nginx" 할당
  • nginx:latest: 사용할 Docker 이미지 지정 (최신 버전의 Nginx)

실행 중인 컨테이너 탐색

컨테이너를 실행한 후 다음 명령어를 사용하여 컨테이너와 상호 작용할 수 있습니다.

  • docker ps: 모든 실행 중인 컨테이너 목록
  • docker logs my-nginx: "my-nginx" 컨테이너의 로그 표시
  • docker exec -it my-nginx bash: 실행 중인 "my-nginx" 컨테이너 내부에서 bash 쉘 열기

컨테이너 중지 및 제거

실행 중인 컨테이너를 중지하려면 docker stop 명령어를 사용합니다.

docker stop my-nginx

중지된 컨테이너를 제거하려면 docker rm 명령어를 사용합니다.

docker rm my-nginx

기본 docker run 명령어와 컨테이너 관리 방법을 이해하면 Docker 를 사용하여 직접 애플리케이션을 구축하고 배포할 수 있습니다.

고급 Docker Run 명령어

기본 docker run 명령어는 많은 경우에 충분하지만, Docker 는 컨테이너의 동작을 사용자 지정하고 미세 조정하기 위한 다양한 옵션을 제공합니다. 여기에는 고급 docker run 명령어와 그 사용 사례가 있습니다.

환경 변수

-e 또는 --env 플래그를 사용하여 컨테이너에 환경 변수를 전달할 수 있습니다. 이는 애플리케이션 설정을 구성하거나 외부 서비스에 연결하는 데 유용합니다.

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mypassword mysql:latest

볼륨 마운팅

볼륨은 컨테이너의 파일 시스템 외부에 데이터를 영구적으로 저장할 수 있도록 합니다. 이는 컨테이너 재시작 후에도 데이터를 유지해야 하는 상태 ful 애플리케이션에 특히 중요합니다.

docker run -d -p 80:80 -v /path/on/host:/var/www/html nginx:latest

네트워킹

--network 플래그를 사용하여 컨테이너를 사용자 지정 네트워크에 연결할 수 있습니다. 이를 통해 컨테이너가 서로 안전하고 효율적으로 통신할 수 있습니다.

docker network create my-network
docker run -d --network my-network --name db mysql:latest
docker run -d --network my-network --name web nginx:latest

리소스 제약

--cpus, --memory, --memory-swap 등의 다양한 플래그를 사용하여 컨테이너에 사용 가능한 리소스 (CPU, 메모리 등) 를 제한할 수 있습니다.

docker run -d --cpus=2 --memory=4g nginx:latest

건강성 검사

--health-cmd 플래그는 실행 중인 컨테이너의 건강 상태를 확인하기 위한 명령어를 지정할 수 있도록 합니다. 이는 애플리케이션의 상태를 모니터링하는 데 유용합니다.

docker run -d --health-cmd="curl -f http://localhost || exit 1" nginx:latest

이러한 고급 docker run 명령어를 이해함으로써 특정 요구 사항을 충족하는 더 복잡하고 정교한 Docker 기반 애플리케이션을 만들 수 있습니다.

요약

이 가이드를 마치면 docker run 명령어와 그 고급 기능에 대한 확실한 이해를 얻게 될 것입니다. 특정 요구 사항에 맞게 Docker 컨테이너를 생성, 관리 및 사용자 지정하는 데 자신감을 가질 수 있을 것입니다. Docker run 명령어의 힘을 활용하여 개발 및 배포 워크플로우를 간소화해 보세요.