[Docker] container run 명령어

제이브로·2024년 2월 7일
0

Docker

목록 보기
9/48
post-thumbnail

1. Docker run

도커 container 실행하기

docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]

  • -d : 컨테이너를 백그라운드로 실행
  • -p : 호스트와 컨테이너의 포트를 연결
    ex) 8888:80은 호스트가 8888이고, 컨테이너가 80이다.
ex) $ sudo docker run --name web -d -p 80:80 nginx

2. Aliases

$ docker container run
$ docker run

3. Options

주요 Options 설명

OptionDefaultDescription
-i, --interactive-컨테이너의 표준 입력(stdin)을 활성화
-t, --tty-tty(가상 터미널)을 할당
--name-컨테이너 이름을 지정
-d, --detach-컨테이너를 백그라운드로 실행
--rm-docker run 명령어가 끝나면, 컨테이너 자동 삭제
-p, --publish-호스트와 컨테이너의 포트를 연결(포트포워딩)
-v, --volume-호스트와 컨테이너의 디렉토리 연결(마운트)
--restartno컨테이너 종료시, 재시작 정책 설정
--privileged-컨테이너 안에서 호스트의 리눅스 커널 기능을 모두 사용
-m-컨테이너가 사용할 최대 메모리 양을 지정
--cpus-컨테이너에 할당할 CPU core수를 지정
--blkio-weight-Block IO의 Quota를 설정
-e, --env-환경변수 설정
--link-다른 컨테이너에 링크를 추가
  • ttyteletypewriter의 약자로 터미널 혹은 콘솔에서 텍스트 입력/출력 환경을 의미한다.

4. -it

-it

  • 주로 -i-t를 함께 사용한다. 리눅스에 키보드를 통해 표준 입력(stdin)을 전달할 수 있게함

5. -p

-p <호스트 포트>:<컨테이너 포트>

  • ex) -p 80:8888 : 호스트에 8888로 접속하면, 컨테이너 내부의 80포트로 자동 접속

포트를 변경해야하는 경우, 컨테이너를 stop 후, start 명령어로 -p 8080:8080 사용

6. -v

-v <호스트 절대경로>:<컨테이너 절대경로>

  • ex) -v /Users:/usr : 컨테이너 /usr에 저장하는 파일은 호스트의 /Users 디렉토리에 저장

볼륨 마운트를 다른 경로로 하고 싶은 경우, 컨테이너를 새롭게 run 해야한다.

  • 컨테이너를 stop 후 새로운 경로로 다시 마운트 되지 않는다.

7. --restart

OptionDefaultDescription
--restart="always"-항상 재시작
--restart="on-failure"-종료 스테이터스가 0이 아닐 때 재시작
--restart="always"-항상 재시작
  • --rm 옵션과 --restart 옵션은 동시에 사용할 수 없다

8. -m

기본적으로 컨테이너는 호스트 하드웨어 리소스의 사용 제한을 받지 않는다

OptionDefaultDescription
-m, --memory-컨테이너가 사용할 최대 메모리 양을 지정
--memory-swap-컨테이너가 사용할 스왑 메모리 영역에 대한 설정
메모리+스왑. 생략 시 메모리의 2배가 설정됨
--memory-reservation---memory 값보다 적은 것으로 구성하는 소프트 제한 값 설정
--oom-kill-disable-oom killer가 프로세스가 kill 하지 못하도록 보호

8.1 examples

$ 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

9. --cpus

OptionDefaultDescription
--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 자원을 할당

9.1 examples

$ 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

10. --blkio

OptionDefaultDescription
--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-iops0 이상의 정수로 표기. 초당 데이터 전송량 = IOPS*블럭크기(단위 데이터 용량)

10.1 examples

$ 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

11. --link

다른 컨테이너 끼리 통신하는 방법

--link {컨테이너 이름}:{Alias이름}

11.1 examples

--link를 컨테이너 이름은 mysql, alias 이름은 mysql

$ docker run -d --name wordpress --link mysql:mysql -e WORDPRESS_DB_PASSWORD=wordpress -p 80:80 wordpress:4

12. References

  1. docker docs run
profile
기록하지 않으면 기록되지 않는다.

0개의 댓글