docker run 명령어 사용법

Minseop Jeong·2022년 1월 16일

docker run은 docker image로 부터 만든 새로운 컨테이너에서 명령어를 실행 시키는 명령어 이다. docker를 사용하면서 가장 많이 접하는 명령어 일텐데, 여러 가지 옵션을 사용하여 컨테이너를 실행 시킬 수 있도록 해준다. docker run에서 사용되는 여러 옵션들을 정리해보았다.

Usage

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

기본 포맷은 위와 같다. IMAGE는 필수로 명시해야 한다. image_id 또는 image_name:[tag] 등으로 명시할 수 있다. [OPTIONS]에는 뒤에 설명할 option들을 추가할 수 있다. [COMMAND] [ARG...]는 실행할 명령어 이다.

Docker run options

-i, -t, -it

$ docker run -it ubuntu:20.04
root@ad9785df1f26:/#

두 옵션은 컨테이너에 터미널의 입력을 계속해서 전달하기 위해 자주 같이 사용된다. -i는 컨테이너에 attach(접속)하지 않은 상태여도 표준 입력(stdin)을 활성화하고 유지한다. -t는 TTY 모드(pseudo-TTY)를 사용하는 것으로, 쉘에 명령어를 작성할 수 있다. -it를 사용하게 되면 두 옵션을 모두 적용하여 docker는 pseudo-TTY를 할당하고, container의 stdin에 연결한다.

-d

$ docker run -d ubuntu:20.04 echo "test"
dbb2e4d820def34b8970dcfd4e66ef27cb4b9bd13431568370d5f58c749f7a69

이 옵션은 컨테이너를 백그라운드에서 실행하도록 하는 옵션이다. 실행한 container id를 출력한다.

-e

$ 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를 여러번 사용해야 한다.

-p

$ docker run -p 127.0.0.1:80:8080 ubuntu:20.04 bash

이 옵션은 호스트에 연결된 컨테이너의 특정 포트를 외부에 노출하기 위해 사용한다. 보통 웹서버의 포트를 외부로 노출하기 위해 사용한다. 위 예제는 컨테이너의 8080 포트를 호스트의 127.0.0.1 ip의 80 포트에 binding 한 것이다.

-w

$ docker run -w /path/to/dir/ ubuntu:20.04 pwd
/path/to/dir/

컨테이너의 working directory를 변경하는 옵션이다.

-v

$ 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 <호스트 디렉터리>:<컨테이너 디렉터리> 와 같이 사용한다.

-u

$ docker run -u minseop ubuntu:20.04 bash

이 옵션은 특정 user 또는 uid로 컨테이너에 접속하기 위해 사용하는 옵션이다. RUN useradd minseop 와 같이 docker image 빌드시 계정을 추가해줘야 한다.

-h

$ docker run -it -h="minseop-mac" ubuntu:20.04
root@minseop-mac:/#

이 옵션은 컨테이너의 호스트 네임을 설정하는 옵션이다.

--name

$ 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

이 옵션은 컨테이너의 이름을 설정할 때 사용하는 옵션이다.

--rm

$ docker run --rm ubuntu:20.04 echo "run command, then container deleted" 

이 옵션은 명령어 수행 후 container가 삭제 되도록 하는 옵션이다. 컨테이너를 일회성으로 사용할 때 주로 사용한다.

Reference

profile
Data Engineer

1개의 댓글

comment-user-thumbnail
2022년 12월 11일

안녕하세요 운영자님
인카토스입니다.
먼저, 댓글로 인사를 드리게 된 점 양해 부탁 드립니다.
이렇게 연락 드린 이유는 이번에 저희가 제작한 도커 각티슈케이스 제품 협찬을 제안드리고 싶어서 연락 드렸습니다.
개발자들에게 많은 사랑은 받은 각티슈케이스입니다.
저희 상품 블로그 포스팅이 가능하실지 여쭙고자 연락드렸습니다.
포스팅이 어려우시다면 도커 글 하단에 이미지와 링크만 좀 달아주셔도 좋을거같습니다.

연락드릴수 있는방법이 댓글밖에 보이지 않아 이렇게 먼저 연락드립니다.

협찬제안에 긍정적인 검토 부탁드리고 제안이 마음에 드신다면 하기 메일로 메일주시면 제품 보내드리도록 하겠습니다.

sungjh0726@naver.com

감사합니다.
인카토스 드림.

답글 달기