docker run
은 docker image로 부터 만든 새로운 컨테이너에서 명령어를 실행 시키는 명령어 이다. docker를 사용하면서 가장 많이 접하는 명령어 일텐데, 여러 가지 옵션을 사용하여 컨테이너를 실행 시킬 수 있도록 해준다. docker run
에서 사용되는 여러 옵션들을 정리해보았다.
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
기본 포맷은 위와 같다. IMAGE
는 필수로 명시해야 한다. image_id
또는 image_name:[tag]
등으로 명시할 수 있다. [OPTIONS]
에는 뒤에 설명할 option들을 추가할 수 있다. [COMMAND] [ARG...]
는 실행할 명령어 이다.
$ docker run -it ubuntu:20.04
root@ad9785df1f26:/#
두 옵션은 컨테이너에 터미널의 입력을 계속해서 전달하기 위해 자주 같이 사용된다. -i
는 컨테이너에 attach(접속)하지 않은 상태여도 표준 입력(stdin)을 활성화하고 유지한다. -t
는 TTY 모드(pseudo-TTY)를 사용하는 것으로, 쉘에 명령어를 작성할 수 있다. -it
를 사용하게 되면 두 옵션을 모두 적용하여 docker는 pseudo-TTY를 할당하고, container의 stdin에 연결한다.
$ docker run -d ubuntu:20.04 echo "test"
dbb2e4d820def34b8970dcfd4e66ef27cb4b9bd13431568370d5f58c749f7a69
이 옵션은 컨테이너를 백그라운드에서 실행하도록 하는 옵션이다. 실행한 container id를 출력한다.
$ docker run -e APP_ENV=production -e APP2_ENV=dev ubuntu:20.04 env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=6049820fc843
APP_ENV=production
APP2_ENV=dev
HOME=/roo
이 옵션은 컨테이너에 환경 변수를 추가하는 옵션이다. 환경 변수 여러개를 추가하고 싶다면 위 예제처럼 -e
를 여러번 사용해야 한다.
$ docker run -p 127.0.0.1:80:8080 ubuntu:20.04 bash
이 옵션은 호스트에 연결된 컨테이너의 특정 포트를 외부에 노출하기 위해 사용한다. 보통 웹서버의 포트를 외부로 노출하기 위해 사용한다. 위 예제는 컨테이너의 8080
포트를 호스트의 127.0.0.1
ip의 80
포트에 binding 한 것이다.
$ docker run -w /path/to/dir/ ubuntu:20.04 pwd
/path/to/dir/
컨테이너의 working directory를 변경하는 옵션이다.
$ echo arrow==1.0.3 > requirements.txt
$ docker run --rm -v `pwd`:/opt ubuntu:20.04 cat /opt/requirements.txt
arrow==1.0.3
이 옵션은 현재 working directory를 컨테이너에 마운트 하는 옵션이다. -v <호스트 디렉터리>:<컨테이너 디렉터리>
와 같이 사용한다.
$ docker run -u minseop ubuntu:20.04 bash
이 옵션은 특정 user 또는 uid로 컨테이너에 접속하기 위해 사용하는 옵션이다. RUN useradd minseop
와 같이 docker image 빌드시 계정을 추가해줘야 한다.
$ docker run -it -h="minseop-mac" ubuntu:20.04
root@minseop-mac:/#
이 옵션은 컨테이너의 호스트 네임을 설정하는 옵션이다.
$ docker run --name ubuntu-test-container ubuntu:20.04 bash
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7fe4d35c8e23 ubuntu:20.04 "bash" 5 seconds ago Exited (0) 4 seconds ago ubuntu-test-container
이 옵션은 컨테이너의 이름을 설정할 때 사용하는 옵션이다.
$ docker run --rm ubuntu:20.04 echo "run command, then container deleted"
이 옵션은 명령어 수행 후 container가 삭제 되도록 하는 옵션이다. 컨테이너를 일회성으로 사용할 때 주로 사용한다.
안녕하세요 운영자님
인카토스입니다.
먼저, 댓글로 인사를 드리게 된 점 양해 부탁 드립니다.
이렇게 연락 드린 이유는 이번에 저희가 제작한 도커 각티슈케이스 제품 협찬을 제안드리고 싶어서 연락 드렸습니다.
개발자들에게 많은 사랑은 받은 각티슈케이스입니다.
저희 상품 블로그 포스팅이 가능하실지 여쭙고자 연락드렸습니다.
포스팅이 어려우시다면 도커 글 하단에 이미지와 링크만 좀 달아주셔도 좋을거같습니다.
연락드릴수 있는방법이 댓글밖에 보이지 않아 이렇게 먼저 연락드립니다.
협찬제안에 긍정적인 검토 부탁드리고 제안이 마음에 드신다면 하기 메일로 메일주시면 제품 보내드리도록 하겠습니다.
sungjh0726@naver.com
감사합니다.
인카토스 드림.