도커
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