[Docker] 도커 컨테이너 명령어
by Choi HyeSun
컨테이너 생성 및 시작 (대화식-attach mode)
-
docker container run [옵션] 이미지명[:태그명][인수]
- container를 생략해도 됨
-
지정할 수 있는 주요 옵션
-
--attach, -a : 표준 입력(STDIN), 표준 출력(STDOUT), 표준 오류 출력(STDERR)에 attach
-
--cidfile : 컨테이너 ID를 파일로 출력
-
--detach, -d : 컨테이너를 생성하고 백그라운드에서 실행
-
--interactive, -i : 컨테이너의 표준 입력을 엶
-
--tty, -t : 단말기 디바이스를 사용
-
달력을 출력하는 컨테이너(예제)
-
docker container run -it –name “test1” centos /bin/cal
-
docker container run
: 컨테이너를 생성 및 실행 -
-it
: 콘솔에 결과를 출력하는 옵션-
-i
- 컨테이너의 표준 출력을 엶 -
-t
- tty(단말 디바이스)를 확보
-
-
--name "test"
: 컨테이너명 지정 -
centos
: 이미지명 지정 -
/bin/cal
: 컨테이너에서 실행할 명령
컨테이너 안에서 쉘(/bin/bash)을 실행(예제)
- exit로 쉘 종료
컨테이너 백그라운드 실행 (백그라운드에서 실행-detach mode)
-
docker container run [실행 옵션] 이미지명[:태그명] [인수]
-
지정할 수 있는 주요 옵션
-
--detach, -d : 백그라운드 실행
-
--user, -u : 사용자명 지정
-
--restart=[no | on-failure | on-failure:횟수n | always | unless-stopped]
: 명령의 실행 결과에 따라 재시작하는 옵션, –rm과 동시 사용 불가 -
--rm : 명령 실행 후 컨테이너 자동 삭제, –restart와 동시 사용 불가
-
-
restart 옵션
-
no : 재시작하지 않음
-
om-failure : 종료 스테이터스가 0이 아닐 때 재시작
-
on-failure:횟수n : 종료 스테이터스가 0이 아닐 때 n번 재시작
-
always : 항상 재시작
-
unless-stopped : 최근 컨테이너가 정지 상태가 아니라면 항상 재시작
-
컨테이너 네트워크 설정
-
docker container run [네트워크 옵션] 이미지명[:태그명] [인수]
-
지정할 수 있는 주요 옵션
-
--add-host=[호스트명:IP주소] : 컨테이너의 /etc/hosts에 호스트명과 IP 주소를 정의
-
--dns=[IP주소] : 컨테이너용 DNS 서버의 IP 주소 지정
-
--expose : 지정한 범위의 포트 번호를 할당
-
--mac-address=[MAC 주소] : 컨테이너의 MAC 주소를 지정
-
--net=[bridge | none | container:<name | id> | host | NETWORK] : 컨테이너의 네트워크 지정
-
--hostname, -h : 컨테이너 자신의 호스트명을 지정
-
--publish, -p[호스트의 포트번호]:[컨테이너의 포트 번호] : 호스트와 컨테이너의 포트 매핑
-
--publish-all, -P : 호스트의 임의의 포트를 컨테이너에 할당
-
컨테이너의 포트 매핑(예제)
-
sudo docker container run -d -p 8080:80 nginx
-
nginx라는 이름의 이미지를 바탕으로 컨테이너를 생성
-
백그라운드에서 실행 (-d 옵션)
-
호스트OS 포트 8080과 컨테이너 포트 80을 매핑
-
포트 번호 할당시는
--expose
사용, 호스트 머신의 임의의 포트 지정시에는-P
옵션 사용
컨테이너의 DNS 서버 지정(예제)
-
docker container run -d –dns 192.168.1.1 nginx
-
DNS서버는 IP로 지정
MAC 주소 지정 (예제)
- docker container run -d –mac-address=”92:d0:c6:0a:21:32” centos
호스트명과 IP 주소 정의 (예제)
- docker container run -it –add-host test.com:192.168.1.1 centos
호스트명 설정 (예제)
- docker container run -it –hostname www.test.com –add-host node1.test.com:192.168.1.1 centos
네트워크 설정
-
--net 옵션
-
기본적으로 호스트OS와 브리지 연결을 함
-
--net
옵션 사용시 네트워크 설정이 가능함
-
설정값 | 설명 |
---|---|
bridge | 브리지 연결(기본값)을 사용 |
none | 네트워크에 연결하지 않음 |
container:[name | id] | 다른 컨테이너의 네트워크를 사용 |
host | 컨테이너가 호스트 OS의 네트워크를 사용 |
NETWORK | 사용자 정의 네트워크 사용 |
사용자 지정 네트워크 작성 (예제)
-
docker network create -d bridge webap-net
-
docker network create : 사용자 정의 네트워크 작성
-
Docker 네트워크 드라이버 또는 외부 네트워크 드라이버 플러그인을 사용해야 함
-
같은 네트워크에 여러 컨테이너가 연결할 수 있음
- 사용자 정의 네트워크에 연결하면 컨테이너는 컨테이너명 또는 IP 주소로 서로 통신 가능
-
오버레이 네트워크나 커스텀 플러그인 사용시 멀티호스트에 대한 연결 가능
- 컨테이너가 동일한 멀티호스트 네트워크에 연결되어 있으면 이 네트워크를 통한 통신 가능)
자원을 지정하여 컨테이너 생성 및 실행
-
docker container run [자원 옵션] 이미지명[:태그명] [인수]
-
지정할 수 있는 주요 옵션
-
--cpu-shares, -c : CPU의 사용 배분(비율), 기본 1024
-
--memory, -m : 사용할 메모리를 제한하여 실행(단위는 b, k, m, g)
-
--volume=[호스트의 디렉토리]:[컨테이너의 디렉토리], -v : 호스트와 컨테이너의 디렉터리를 공유
-
CPU 시간의 상대 비율과 메모리 사용량 지정 (예제)
-
docker container run --cpu-shares=512 –memory=1g centos
-
CPU 시간을 기본의 반정도로 설정
디렉토리 공유 (예제)
-
호스트 OS와 컨테이너 안의 디렉토리를 공유 : -v(–volume)옵션 사용
-
호스트 OS의 /root/sun/web 디렉터리와 컨테이너의 /usr/share/nginx/html 디렉터리를 공유
컨테이너 생성 및 시작하는 환경 지정
-
docker container run [환경설정 옵션] 이미지명[:태그명] [인수]
-
컨테이너의 환경변수나 컨테이너 안의 작업 디렉터리를 지정하여 컨테이너를 생성/실행
-
주요 옵션
-
--env=[환경변수], -e : 환경변수를 설정
-
--env-file=[파일명] : 환경변수를 파일로부터 설정
-
--read-only=[true | false] : 컨테이너의 파일 시스템을 읽기 전용으로 만듦
-
--workdir=[패스], -w : 컨테이너의 작업 디렉터리를 지정
-
-u, –user=[사용자명\ : 사용자명 또는 UID 지정
-
환경변수 설정 (예제)
- -e 옵션을 사용해 환경변수 등록 가능
환경변수의 일괄 설정 (예제)
- 환경변수를 정의한 파일로부터 일괄적으로도 환경변수 등록 가능
작업 디렉터리 설정 (예제)
- 작업 디렉터리 설정 가능
가동중인 컨테이너 목록 표시
-
docker container ls [옵션]
-
docker 상에서 작동하는 컨테이너의 가동 상태를 확인 → 가동중인 컨테이너 상태가 표시
-
주요 옵션
-
--all, -a : 실행 중/정지 중인 것도 포함하여 모든 컨테이너 표시
-
--filter, -f : 표시할 컨테이너의 필터링
-
--format : 표시 포맷을 지정
-
--last, -n : 마지막으로 실행된 n건의 컨테이너만 표시
-
--latest, -l : 마지막으로 실행된 컨테이너만 표시
-
--no-trunc : 정보를 생략하지 않고 표시
-
--quiet, -q : 컨테이너 ID만 표시
-
--size, -s : 파일 크기 표시
-
컨테이너 목록 표시 (예제)
-
docker container ls
- docker ps와 같은 명령
-
명령 결과
-
CONTAINER ID : 컨테이너 ID
-
IMAGE : 컨테이너 바탕 이미지
-
COMMAND : 컨테이너 안에서 실행되고 있는 명령
-
CREATED : 컨테이너 작성 후 경과 시간
-
STATUS : 컨테이너 상태 (restarting | running | paused | exited)
-
PORTS : 할당된 포트
-
NAMES : 컨테이너 이름
-
컨테이너 목록의 필터링 (예제)
-
-a : 정지 중인 컨테이너까지 모두 표시
-
-f : 컨테이너 필터링시 사용
- key=value 형식으로 필터링 지정
출력 형식의 지정
플레이스 홀더 | 설명 |
.ID | 컨테이너 ID |
.Image | 이미지 ID |
.Command | 실행 명령 |
.CreatedAt | 컨테이너 작성 시간 |
.RunningFor | 컨테이너 가동 시간 |
.Ports | 공개 포트 |
.Status | 컨테이너 상태 |
.Size | 컨테이너 디스크 크기 |
.Names | 컨테이너명 |
.Mounts | 볼륨 마운트 |
.Networks | 네트워크명 |
컨테이너 목록의 출력 형식 지정 (예제)
컨테이너 목록을 표 형식으로 출력 (예제)
컨테이너 가동 확인
-
docker container stats [컨테이너 식별자]
-
컨테이너 가동 상태를 확인, 컨테이너 가동 상태가 목록으로 표시 됨
컨테이너 가동 확인 (예제)
-
test2라는 이름의 컨테이너 가동 상황 확인
- 확인 종료시
Ctrl
+c
로 명령 종료
- 확인 종료시
-
명령 결과
항목 | 설명 |
---|---|
CONTAINER ID | 컨테이너 식별자 |
NAME | 컨테이너명 |
CPU % | CPU 사용률 |
MEM USAGE/LIMIT | 메모리 사용량/컨테이너에서 사용할 수 있는 메모리 제한 |
MEM % | 메모리 사용률 |
NET I/O | 네트워크 I/O |
BLOCK I/O | 블록 I/O |
PIDS | PID(Windows 컨테이너 제외) |
프로세스 확인 (예제)
- 컨테이너에서 실행 중인 프로세스 확인
컨테이너 시작
-
docker container start [옵션] <컨테이너 식별자> [컨테이너 식별자]
-
주요 옵션
-
--attach, -a : 표준 출력, 표준 오류 출력을 엶
-
--interactive, -i : 컨테이너의 표준 입력을 엶
-
Docker 컨테이너 시작 (예제)
-
container ID가 ad4e56e15490인 컨테이너를 시작하려면 위와 같이 하면 됨
-
컨테이너식별자
-
ID 시작부터 n자리까지만 적으면 되는데, 다른 컨테이너와 겹치지 않고 해당 컨테이너만 지칭할 수 있으면 몇자리던 상관없음
-
아니면 컨테이너명(recursing_jones - 생략불가)
-
컨테이너 정지
-
docker container stop [옵션] <컨테이너 식별자> [컨테이너 식별자]
-
주요 옵션
- --time, -t : 컨테이너의 정지 시간을 지정(기본값 : 10초)
컨테이너 정지 (예제)
- 강제적으로 정지할 때는 docker container kill을 사용할 것(사용 방법 동일)
컨테이너 재시작
-
docker container restart [옵션] <컨테이너 식별자> [컨테이너 식별자]
-
주요 옵션
- --time, -t : 컨테이너의 재시작 시간을 지정(기본값 : 10초)
-
컨테이너 안에서 실행하는 명령의 종료 스테이터스에 따라 컨테이너를 자동으로 재시작하고 싶은 경우 docker container run에서 ‘–restart’옵션 사용
컨테이너 재시작 (예제)
- 2초 후 재시작
컨테이너 삭제
-
docker container rm [옵션] <컨테이너 식별자> [컨테이너 식별자]
-
정지하고 있는 컨테이너 삭제
-
주요 옵션
-
--force, -f : 실행 중인 컨테이너를 강제로 삭제
-
--volumes, -v : 할당한 볼륨 삭제
-
컨테이너 삭제 (예제)
- 사용중이라면 다음과 같이 나타나고,
-f
옵션을 통해 강제로 삭제할 수 있음
- 정지중이라면 다음과 같이 삭제됨
- 정지 중인 모든 컨테이너 삭제
컨테이너 중단/재
-
docker container pause <컨테이너 식별자>
-
작동 중인 프로세스를 모두 중단
컨테이너 중단 (예제)
-
pause로 일시 중단
-
status 확인시 (Paused)로 표시
컨테이너 재실행 (예제)
- unpause로 컨테이너 재개
Subscribe via RSS