Docker Command - build / push / pull / run
Docker는 다양한 명령어를 옵션과 함께 제공합니다. 이번 글에서는 build / push / pull / run / exec에 대해 알아보도록 하겠습니다.
Docker build
build를 할 경우 Dockerfile이 레이어화 되어 이미지가 로컬에 생성됩니다. (빌드 후 조회방법 $ docker images)
docker build [OPTIONS] PATH | URL | -
OPTIONS (https://docs.docker.com/engine/reference/commandline/build/#usage)
| NAME | DEFAULT | DESCRIPTION |
|---|---|---|
| –add-host | 호스트 - IP 매핑 추가 (호스트 : ip) | |
| –build-arg | 빌드 타임 변수 추가 | |
| –cache-from | 캐시 소스로 고려할 이미지 지정 | |
| –cgroup-parent | 컨테이너의 선택적 부모 cgroup | |
| –compress | FALSE | gzip을 사용하여 빌드 컨텍스트 압축 |
| –cpu-period | 0 | CPU CFS 기간 제한 |
| –cpu-quota | 0 | CPU CFS 할당량 제한 |
| –cpu-shares, -c | 0 | CPU 점유율 (상대적 가중치) |
| –cpuset-cpus | 실행을 허용하는 CPU (0-3, 0,1) | |
| –cpuset-mems | 실행을 허용 할 MEM (0-3, 0,1) | |
| –disable-content-trust | TRUE | 이미지 확인 건너 뛰기 |
| –file, -f | Dockerfile의 이름 (기본값 : ‘PATH / Dockerfile’) | |
| –force-rm | FALSE | 이미지 생성을 실패했을때 임시컨테이너 제거 |
| –iidfile | 이미지 ID를 파일에 기록 | |
| –isolation | 컨테이너 격리 기술 | |
| –label | 이미지 메타데이터 설정 | |
| –memory, -m | 0 | 메모리 제한 |
| –memory-swap | 0 | 스왑 한도는 메모리 + 스왑과 같음, ‘-1’은 무제한 스왑을 가능하게 하는 설정 |
| –network | default | 빌드하는 동안 RUN 명령어의 네트워킹 모드 설정 |
| –no-cache | FALSE | 이미지를 만들 때 이전 빌드 때 사용한 캐시 미사용 |
| –pull | FALSE | 항상 최신 버전의 이미지 pull |
| –quiet, -q | FALSE | 성공시 빌드 출력 및 인쇄 이미지 ID 미표시 |
| –rm | TRUE | 성공적인 빌드 후에 임시 컨테이너 제거 |
| –security-opt | 보안 옵션 | |
| –shm-size | 0 | / dev / shm의 크기 |
| –squash | FALSE | 새로운 레이어로 생성 |
| –tag, -t | 저장소, 이름 (‘name(저장소) : tag’) | |
| –target | 빌드 할 대상의 단계 설정 (Dockerfile 내에서 단계를 지정가능) | |
| –ulimit | 컨테이너 내 제한조건 설정 |
Docker push
로컬에 있는 이미지를 Docker Hub(public)이나 각 사용자가 생성한 Private 보관소에 업로드 하는 명령어입니다.
docker push [OPTIONS] NAME[:TAG]
OPTIONS (https://docs.docker.com/engine/reference/commandline/push/#description)
| NAME | DEFAULT | DESCRIPTION |
|---|---|---|
| –disable-content-trust | true | 키를 이용한 이미지 서명 건너뛰기 (이미지 변조 방지 목적) |
Docker pull
Docker Hub(public)이나 각 사용자가 생성한 Private 보관소의 이미지를 로컬로 불러오는 명령어입니다.
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS (https://docs.docker.com/engine/reference/commandline/pull/)
| NAME | DEFAULT | DESCRIPTION |
|---|---|---|
| –all-tags, -a | false | 저장소에있는 모든 태그가 있는 이미지 다운로드 |
| –disable-content-trust | true | 이미지 서명 건너 뛰기 |
Docker run
이미지를 컨테이너화시키는 명령어입니다. (실행 후 확인 명령어 docker ps)
build는 이미지를 생성하는 명령어, run은 실제 동작하는 프로세스로 컨테이너화 한다고 보시면 됩니다.
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
OPTIONS (https://docs.docker.com/engine/reference/commandline/run/#description)
| NAME | DEFAULT | DESCRIPTION |
|---|---|---|
| add-host | 맞춤 호스트 - IP 매핑 추가 (호스트 : ip) | |
| –attach, -a | 표준 입력(STDIN), 표준 출력(STDOUT) 또는 표준 에러(STDERR)를 연결 | |
| –blkio-weight | 0 | 10과 1000 사이의 IO(상대적 가중치)를 차단하거나 사용하지 않으려면 0 |
| –blkio-weight-device | block IO 가중치 (상대 장치 무게) | |
| –cap-add | cgroups의 특정 Capability를 사용, ALL을 지정하면 모든 Capability를 사용 | |
| –cap-drop | cgroups의 특정 Capability를 사용을 제외 | |
| –cgroup-parent | 컨테이너의 부모 cgroup 선택 | |
| –cidfile | 파일에 컨테이너 ID를 사용 | |
| –cpu-count | 0 | CPU 수 (Windows 만 해당) |
| –cpu-percent | 0 | CPU 비율 (Windows 만 해당) |
| –cpu-period | 0 | CPU CFS (완전 공정 스케줄러) 기간 제한 |
| –cpu-quota | 0 | CPU CFS (완전 공정한 스케줄러) 할당량 제한 |
| –cpu-rt-period | 0 | 마이크로 초 단위로 CPU 실시간 기간 제한 |
| –cpu-rt-runtime | 0 | 마이크로 초 단위로 CPU 실시간 런타임 제한 |
| –cpu-shares, -c | 0 | CPU 점유율 (기본 값은 1024이며 각 값은 상대적 가중치) |
| –cpus | CPU 수 | |
| –cpuset-cpus | 실행을 허용하는 CPU (0-3, 0,1) | |
| –cpuset-mems | 실행을 허용 할 MEM (0-3, 0,1) | |
| –detach, -d | FALSE | 백그라운드에서 컨테이너 실행 |
| –detach-keys | 컨테이너를 분리하기 위한 key sequence 재정의 | |
| –device | 컨테이너에 호스트 장치 추가 | |
| –device-cgroup-rule | cgroup allowed devices 목록에 규칙 추가 | |
| –device-read-bps | 장치에서 읽기 속도 (바이트 / 초) 제한 | |
| –device-read-iops | 장치에서 읽기 속도 (초당 IO) 제한 | |
| –device-write-bps | 장치에 쓰기 속도 (바이트 / 초) 제한 | |
| –device-write-iops | 장치에 쓰기 속도 (초당 IO) 제한 | |
| –disable-content-trust | TRUE | 이미지 서명 확인 건너 뛰기 |
| –dns | 사용자 지정 DNS 서버 설정 | |
| –dns-opt | DNS 옵션 설정 | |
| –dns-option | DNS 옵션 설정 | |
| –dns-search | 사용자 지정 DNS 검색 도메인 설정 | |
| –entrypoint | 이미지의 기본 ENTRYPOINT를 덮어쓰기 | |
| –env, -e | 환경 변수 설정 | |
| –env-file | 환경 변수 파일 읽기 | |
| –expose | 포트 또는 포트 범위 노출 | |
| –group-add | 가입 할 추가 그룹추가 | |
| –health-cmd | Health 상태 점검 | |
| –health-interval | 0s | 검사를 실행하는 시간 (ms | s | m | h) (기본값 0) |
| –health-retries | 0 | Health 체크 시 시도하는 횟수 |
| –health-start-period | 0s | Health-Retries Countdown (ms | s | m | h)을 시작하기 전에 컨테이너를 초기화하는 시작 기간 (기본값 0) |
| –health-timeout | 0s | 하나의 검사를 실행할 수있는 최대 시간 (ms | s | m | h) (기본값 0) |
| –help | FALSE | 도움말 |
| –hostname, -h | 컨테이너 호스트 이름 | |
| –init | FALSE | ex)/bin/bash를 PID를 1로 실행 (TRUE일 경우 /dev/init가 pid 1) |
| –interactive, -i | FALSE | 컨테이너와 연결(attach)되어 있지 않더라도 표준 입력을 유지 |
| –io-maxbandwidth | 0 | 시스템 드라이브의 최대 입출력 대역폭 제한 (Windows 만 해당) |
| –io-maxiops | 0 | 시스템 드라이브의 최대 입출력 제한 (Windows에만 해당) |
| –ip | IPv4 주소 (예 : 172.30.100.104) | |
| –ip6 | IPv6 주소 (예 : 2001 : db8 :: 33) | |
| –ipc | 사용할 IPC 네임 스페이스 | |
| –isolation | 컨테이너의 격리유형을 설정 | |
| –kernel-memory | 0 | 커널 메모리 제한 |
| –label, -l | 컨테이너에 메타 데이터 설정 | |
| –label-file | 레이블로 구분 된 파일을 읽기 | |
| –link | 다른 컨테이너에 링크 추가 | |
| –link-local-ip | 컨테이너 IPv4 / IPv6 링크 로컬 주소 | |
| –log-driver | 컨테이너에 대한 로깅 드라이버 | |
| –log-opt | 로깅 드라이버 옵션 | |
| –mac-address | 컨테이너 MAC 주소 (예 : 92 : d0 : c6 : 0a : 29 : 33) | |
| –memory, -m | 0 | 메모리 제한 |
| –memory-reservation | 0 | 유동적인 메모리 제한 |
| –memory-swap | 0 | 스왑 한도 = 메모리 + 스왑, ‘-1’은 무제한 스왑을 가능 |
| –memory-swappiness | -1 | 컨테이너 메모리 스왑 (0 ~ 100) 조정 |
| –mount | 컨테이너에 파일 시스템을 마운트 | |
| –name | 컨테이너에 이름 지정 | |
| –net | default | 컨테이너를 네트워크에 연결 |
| –net-alias | 컨테이너에 네트워크 범위 별칭 추가 | |
| –network | default | 컨테이너를 네트워크에 연결 |
| –network-alias | 컨테이너에 네트워크 범위 별칭 추가 | |
| –no-healthcheck | FALSE | 컨테이너가 지정한 HEALTHCHECK 비활성화 |
| –oom-kill-disable | FALSE | OOM 킬러 미사용 |
| –oom-score-adj | 0 | 호스트의 OOM 환경 설정 조정 (-1000 - 1000) |
| –pid | 사용할 PID 네임 스페이스 | |
| –pids-limit | 0 | 컨테이너 pids 한도 조정 (무제한의 경우 -1로 설정) |
| –privileged | FALSE | 이 컨테이너에 확장 된 리눅스 커널 기능(Capability) 권한을 부여 |
| –publish, -p | 컨테이너의 포트를 호스트에 게시 | |
| –publish-all, -P | FALSE | 호스트에 연결된 컨테이너의 모든 포트를 외부에 노출 |
| –read-only | FALSE | 컨테이너의 루트 파일 시스템을 읽기 전용으로 마운트 |
| –restart | no | 컨테이너가 종료 할 때 적용 할 정책을 다시 시작 |
| –rm | FALSE | 컨테이너가 종료되면 컨테이너도 자동으로 제거합니다. |
| –runtime | 이 컨테이너에 사용하는 런타임 | |
| –security-opt | 보안 옵션 | |
| –shm-size | 0 | / dev / shm의 크기 |
| –sig-proxy | TRUE | 모든 시그널을 프로세스에 전달(TTY 모드가 아닐 때도). 단 SIGCHLD, SIGKILL, SIGSTOP 시그널은 전달 |
| –stop-signal | SIGTERM | 컨테이너를 멈추게하는 신호 |
| –stop-timeout | 0 | 컨테이너를 중지하는 시간 초과 (초) |
| –storage-opt | 컨테이너의 저장소 드라이버 옵션 | |
| –sysctl | map[] | Sysctl 옵션 |
| –tmpfs | tmpfs 디렉토리 마운트 | |
| –tty, -t | FALSE | 가상 TTY 할당 |
| –ulimit | 컨테이너 내 제한조건 설정 | |
| –user, -u | 사용자 이름 또는 UID (형식 : <name | uid> [: <group | gid>]) | |
| –userns | 사용할 사용자 이름 공간 | |
| –uts | 사용할 UTS 네임 스페이스 | |
| –volume, -v | 볼륨 마운트 | |
| –volume-driver | 컨테이너 용 선택적 볼륨 드라이버 | |
| –volumes-from | 지정된 컨테이너에서 볼륨 마운트 | |
| –workdir, -w | 컨테이너 내부 작업 디렉토리 |
참고 사이트
- Docker 문서 사이트 : (https://docs.docker.com/engine/reference/commandline/)
- 류재영님의 블로그 : (http://longbe00.blogspot.kr/)