docker run 명령어 사용법

Minseop Jeong·2022년 1월 16일
1

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

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

답글 달기