도커
container
실행하기
docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
-d
: 컨테이너를 백그라운드로 실행-p
: 호스트와 컨테이너의 포트를 연결8888:80
은 호스트가 8888
이고, 컨테이너가 80
이다.ex) $ sudo docker run --name web -d -p 80:80 nginx
$ docker container run
$ docker run
주요
Options
설명
Option | Default | Description |
---|---|---|
-i, --interactive | - | 컨테이너의 표준 입력(stdin)을 활성화 |
-t, --tty | - | tty(가상 터미널)을 할당 |
--name | - | 컨테이너 이름을 지정 |
-d, --detach | - | 컨테이너를 백그라운드로 실행 |
--rm | - | docker run 명령어가 끝나면, 컨테이너 자동 삭제 |
-p, --publish | - | 호스트와 컨테이너의 포트를 연결(포트포워딩) |
-v, --volume | - | 호스트와 컨테이너의 디렉토리 연결(마운트) |
--restart | no | 컨테이너 종료시, 재시작 정책 설정 |
--privileged | - | 컨테이너 안에서 호스트의 리눅스 커널 기능을 모두 사용 |
-m | - | 컨테이너가 사용할 최대 메모리 양을 지정 |
--cpus | - | 컨테이너에 할당할 CPU core수를 지정 |
--blkio-weight | - | Block IO의 Quota를 설정 |
-e, --env | - | 환경변수 설정 |
--link | - | 다른 컨테이너에 링크를 추가 |
tty
는 teletypewriter
의 약자로 터미널 혹은 콘솔에서 텍스트 입력/출력 환경을 의미한다.
-it
-i
와 -t
를 함께 사용한다. 리눅스에 키보드를 통해 표준 입력(stdin)을 전달할 수 있게함
-p <호스트 포트>:<컨테이너 포트>
-p 80:8888
: 호스트에 8888
로 접속하면, 컨테이너 내부의 80
포트로 자동 접속포트를 변경해야하는 경우, 컨테이너를
stop
후,start
명령어로-p 8080:8080
사용
- 컨테이너를 새로 시작하지 않아도 된다. 잠깐 멈춘 후 재시작
- 참고 : [Docker] container start 명령어
-v <호스트 절대경로>:<컨테이너 절대경로>
-v /Users:/usr
: 컨테이너 /usr
에 저장하는 파일은 호스트의 /Users
디렉토리에 저장볼륨 마운트를 다른 경로로 하고 싶은 경우, 컨테이너를 새롭게
run
해야한다.
- 컨테이너를
stop
후 새로운 경로로 다시 마운트 되지 않는다.
Option | Default | Description |
---|---|---|
--restart="always" | - | 항상 재시작 |
--restart="on-failure" | - | 종료 스테이터스가 0 이 아닐 때 재시작 |
--restart="always" | - | 항상 재시작 |
--rm
옵션과 --restart
옵션은 동시에 사용할 수 없다기본적으로 컨테이너는 호스트 하드웨어 리소스의 사용 제한을 받지 않는다
Option | Default | Description |
---|---|---|
-m, --memory | - | 컨테이너가 사용할 최대 메모리 양을 지정 |
--memory-swap | - | 컨테이너가 사용할 스왑 메모리 영역에 대한 설정 |
메모리+스왑. 생략 시 메모리의 2배가 설정됨 | ||
--memory-reservation | - | --memory 값보다 적은 것으로 구성하는 소프트 제한 값 설정 |
--oom-kill-disable | - | oom killer 가 프로세스가 kill 하지 못하도록 보호 |
$ docker run -d -m 512m nginx:1.14
$ docker run -d -m 1g --memory-reservation 500m nginx:1.14
$ docker run -d -m 200m --memory-swap 300m nginx:1.14
$ docker run -d -m 200m --oom-kill-disable nginx:1.14
Option | Default | Description |
---|---|---|
--cpus | - | 컨테이너에 할당할 CPU core수를 지정 |
ex) --cpus="1.5" 컨테이너가 최대 1.5 개의 CPU 파워 사용가능 | ||
--cpuset-cpus | - | 컨테이너가 사용할 수 있는 CPU나 코어를 할당. cpu index 는 0부터 |
ex) --cpuset-cpus=0-4 | ||
--cpu-share | - | 컨테이너가 사용하는 CPU 비중을 1024 값을 기반으로 설정 |
ex) --cpu-share 2048 는 기본 값보다 2배 많은 CPU 자원을 할당 |
$ docker run -d --cpus=".5" ubuntu:1.14
$ docker run -d --cpu-shares 2048 ubuntu:1.14
$ docker run -d --cpuset-cpus 0-3 ubuntu:1.14
Option | Default | Description |
---|---|---|
--blkio-weight | - | Block IO의 Quota를 설정할 수 있으며 100 ~ 100까지 선택 (default 500) |
--blkio-weight-device | ||
--device-read-bps | - | 특정 디바이스에 대한 읽기와 쓰기 작어브이 초당 제한을 kb, mb, gb 단위로 설정 |
--device-write-bps | ||
--device-read-iops | - | 컨테이너의 read/write 속도의 쿼터를 설정한다. 초당 quota를 제한해서 I/O를 발생시킴 |
--device-write-iops | 0 이상의 정수로 표기. 초당 데이터 전송량 = IOPS*블럭크기 (단위 데이터 용량) |
$ docker run -it --rm --blkio-weight 100 ubuntu:lateset /bin/bash
$ docker run -it --rm --blkio-write-bps /dev/vda:1mb ubuntu:latest /bin/bash
$ docker run -it --rm --blkio-write-bps /dev/vda:10mb ubuntu:latest /bin/bash
$ docker run -it --rm --blkio-write-bps /dev/vda:10 ubuntu:latest /bin/bash
$ docker run -it --rm --blkio-write-bps /dev/vda:100 ubuntu:latest /bin/bash
다른 컨테이너 끼리 통신하는 방법
- 현재
--link
는 레거시 옵션으로,docker network create
추가를 추천- 참고 : [Docker] network create 명령어
--link {컨테이너 이름}:{Alias이름}
--link
를 컨테이너 이름은mysql
,alias
이름은mysql
$ docker run -d --name wordpress --link mysql:mysql -e WORDPRESS_DB_PASSWORD=wordpress -p 80:80 wordpress:4