[Docker]#7 Docker 기본 명령어 - run
docker run 명령어는 Docker에서 컨테이너를 실행하는 데 사용되는 가장 중요한 명령어 중 하나입니다. 이 명령어에는 다양한 옵션이 있으며, 이를 적절하게 활용하면 컨테이너 관리가 훨씬 수월해집니다. 이 포스팅에서는 docker run 명령어의 자주 쓰이는 옵션들과 그 옵션들의 사용법에 대해 자세히 설명하겠습니다.
Docker run 명령어
Docker는 프로세스를 격리된 컨테이너에서 실행합니다. 컨테이너는 호스트에서 실행되는 격리된 프로세스라는 사실은 이미 몇 차례 강조하였습니다. 이 호스트는 로컬일 수도 있고 원격일 수도 있습니다. docker run 명령어를 실행하면, 실행되는 컨테이너 프로세스는 자체 파일 시스템, 자체 네트워킹, 그리고 호스트와 분리된 자체 격리된 프로세스 트리를 갖고 있습니다.
Docker run 명령어는 일반적으로 다음과 같은 형식을 가지고 있습니다:
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
이때 가장 중요한 점은 Docker run의 옵션은 이미지 앞에 있다는 점입니다. Docker run 명령어를 입력 시 옵션은 이미지 앞에 이미지 내부에서 수행할 명령어는 이미지 다음에 작성합니다.
Docker run 명령어 옵션
컨테이너를 실행시키기 위해 Docker run 명령어를 입력하면 컨테이너가 생성됩니다. 이 때, 다양한 옵션을 줄 수가 있습니다. 옵션은 컨테이너 실행 시 여러 설정을 할 수 있는 기능을 제공합니다. 자주 사용하는 명령어 옵션에 형광펜을 칠했으니 해당 옵션은 잘 확인해보시기 바랍니다.
1) --name
--name 옵션은 컨테이너에 이름을 지정합니다. 지정된 이름으로 컨테이너를 쉽게 관리할 수 있습니다.
docker run -d --name mynginx nginx
위 명령어는 Nginx 컨테이너를 mynginx라는 이름으로 실행합니다.
2) -p (Publish)
-p 옵션은 호스트의 포트와 컨테이너의 포트를 매핑합니다. 이를 통해 호스트 시스템의 특정 포트를 통해 컨테이너의 서비스를 접근할 수 있습니다.
docker run -d -p 8080:80 nginx
위 명령어는 호스트의 포트 8080을 컨테이너의 포트 80에 매핑하여, 웹 브라우저에서 http://localhost:8080으로 접근할 수 있게 합니다.
3) -it
-it 옵션은 -i(interactive)와 -t(tty) 옵션을 결합한 것으로, 대화형 셸을 실행할 때 사용합니다. 이를 통해 컨테이너 내부로 접속하여 명령어를 입력할 수 있습니다.
docker run -it ubuntu /bin/bash
위 명령어는 Ubuntu 컨테이너에서 Bash 셸을 실행하여 사용자가 직접 명령어를 입력할 수 있게 합니다.
4) --rm
--rm 옵션은 컨테이너가 종료되면 자동으로 삭제되도록 합니다. 이는 임시 작업을 위한 컨테이너 실행 시 유용합니다.
docker run --rm busybox echo "Hello, World!"
위 명령어는 busybox 컨테이너를 실행하여 "Hello, World!"를 출력하고, 작업이 완료되면 컨테이너를 자동으로 삭제합니다.
5) -d (Detached mode)
-d 옵션은 컨테이너를 백그라운드에서 실행하도록 합니다. 이 옵션을 사용하면 컨테이너의 로그가 터미널에 출력되지 않으며, 터미널을 종료해도 컨테이너가 계속 실행됩니다.
docker run -d nginx
위 명령어는 Nginx 웹 서버를 백그라운드에서 실행합니다.
6) -v (Volume)
-v 옵션은 호스트와 컨테이너 간에 파일이나 디렉토리를 공유할 수 있게 합니다. 컨테이너에서 작업을 수행하면 호스트와 연결된 파일이나 디렉토리에 작업 결과가 저장됩니다. 이를 통해 데이터 지속성을 보장할 수 있습니다.
docker run -d -v /my/host/directory:/my/container/directory nginx
위 명령어는 호스트의 /my/host/directory 디렉토리를 컨테이너의 /my/container/directory 디렉토리에 마운트합니다.
7) -e (Environment)
-e 옵션은 컨테이너 내에서 사용할 환경 변수를 설정합니다. 이는 애플리케이션의 설정 값을 동적으로 제공할 때 유용합니다.
docker run -d -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
위 명령어는 MySQL 컨테이너를 실행하면서 MYSQL_ROOT_PASSWORD 환경 변수를 my-secret-pw로 설정합니다.
8) --network
--network 옵션은 컨테이너가 연결될 네트워크를 지정합니다. Docker는 기본적으로 bridge 네트워크를 사용하지만, 필요에 따라 사용자 정의 네트워크를 지정할 수 있습니다.
docker run -d --network mynetwork nginx
위 명령어는 mynetwork라는 사용자 정의 네트워크에 연결된 Nginx 컨테이너를 실행합니다.
9) --restart
--restart 옵션은 컨테이너의 재시작 정책을 설정합니다. 이는 컨테이너가 종료되었을 때 자동으로 다시 시작되도록 하는 데 유용합니다.
docker run -d --restart unless-stopped redis
위 명령어는 Redis 컨테이너를 실행하며, 컨테이너가 수동으로 중지되지 않는 한 자동으로 재시작되도록 설정합니다
10) -u (User)
-u 옵션은 컨테이너 내에서 명령을 실행할 사용자를 지정합니다. 이는 보안 목적으로 root가 아닌 특정 사용자로 실행할 때 유용합니다.
docker run -d -u 1001:1001 nginx
위 명령어는 UID 1001과 GID 1001을 가진 사용자로 Nginx 컨테이너를 실행합니다.
결론
docker run 명령어는 매우 강력하고 유연한 명령어로, 다양한 옵션을 통해 컨테이너 실행 환경을 상세히 설정할 수 있습니다. 이 포스팅에서 소개한 주요 옵션들을 잘 활용하면, Docker 컨테이너를 더욱 효과적으로 관리하고 활용할 수 있을 것입니다. Docker의 다양한 옵션을 이해하고 활용한다면 개발 및 운영 환경에서 Docker를 활용해 최고의 성능을 발휘할 수 있을 것입니다.
도움이 되셨다면 공감 부탁드리겠습니다. 여러분의 공감이 정말 큰 힘이 됩니다.
감사합니다!