DevOps/Docker

[ Docker #05 알아보기 5/5 ] - 도커 명령어 CLI 모음

지금까지 도커에 대한 성능 비교부터 도커허브 등 다양하게 알아보았습니다.

앞으로의 포스팅은 다양한 환경에서 설치 및 실무 환경 구축 중심으로 진행될 예정이므로

이번 포스팅에서는 Docker Command 명령어에 대해 미리 알아보도록 하겠습니다.

 

 

COMMANDS

docker CLI

위의 이미지로 정리한 명령어 처럼 22개만 알면 Docker의 활용은 완벽하게 진행하실 수 있습니다.

 

 

SEARCH

docker search

docker search centos

- Docker HUB에 공유되어 있는 images 찾는 명령어

- 공식 이미지의 경우 앞에 " / " (슬래쉬)가 없는 특징이 있다.

- 일반 사용자가 배포한 이미지의 경우 ex) jbookes/centos 처럼 슬러쉬 앞쪽에 이름이 붙어 있다.

 

 

PULL

docker pull

docker pull centos:latest

- Docker HUB로 부터 images를 다운받는 명령어

 

 

IMAGES

docker images

dokcer images

- HOST OS에 다운 받아져 있는 images 목록을 출력하는 명령어

 

 

RMI

docker rmi

docker rmi IMAGE

- docker image를 삭제할 때 사용한다.

- image를 사용하여 컨테이너를 생성한 경우 컨테이너를 제거해야 이미지도 제거할 수 있다.

 

 

CREATE

docker create

docker create -i -t --name [CONTAINER] [IMAGE]

- 특정 docker image를 기반으로 container로 생성하는 명령어

- i : interative의 약자, 상호 입출력하는 옵션

- t : tty를 활성화해서 bash 셸을 사용하는 옵션

- 일반적으로 i와 t는 터미널 입력을 위한 옵션으로 사용 됨. ( -it 또는  -i -t )

 

 

RUN

docker run

docker run -it --rm -d -p xxxx:yyyy -v /path/to/yours/:/path/to/container --name CONTAINER REPOSITORY:TAG 

- 특정 docker image를 기반으로 container로 생성하는 명령어, 컨테이너 생성 후 접속

- d : 컨테이너를 백그라운드에서 동작시키는 옵션

- it : 컨테이너와 통신할 수 있는 tty를 오픈하여 보여주는 옵션

- p : HOST OS와 Container의 포트를 포트포워딩 시켜주는 역할 ( xxxx:yyyy = 호스트:도커 )

- v : 볼륨 마운팅 ( path/yours:path/container = 호스트:도커 )

- rm : 컨테이너 중지시 컨테이너 자동삭제 ( 사용 : --rm )

- name : 컨테이너 이름 설정, 미설정시 랜덤의 이름으로 생성됨 ( 사용 : --name )

 

 

LS

docker ls

docker CONTAINER ls -a

- 생성된 컨테이너 리스트 조회

- CONTAINER ID / IMAGE / COMMAND / CREATED / STATUS / PORTS / NAMES 확인 가능

- CONTAINER ID : 컨테이너별 독립 아이디

- IMAGE : Build한 이미지의 아이디

- COMMAND : 설정된 Command 확인

- CREATED : 컨테이너 생성일

- STATUS : 컨테이너 실행일

- PORTS : 포트포워딩 설정 확인

- NAMES : 설정한 컨테이너 이름(중복불가)

 

 

RENAME

docker rename

docker rename OLD_CONTAINER NEW_CONTAINER

- 컨테이너 이름 변경 명령어

 

 

STOP

docker stop

docker stop CONTAINER

- 실행중인 컨테이너를 종료한다

- 특정 옵션이 있는 경우 자동으로 삭제됨 (--rm 옵션을 통해 컨테이너를 생성한 경우)

 

 

START

docker start

docker start CONTAINER

- 생성된 컨테이너를 실행하는 명령어

 

 

RESTART

docker restart

docker restart CONTAINER

- 생성된 컨테이너를 재실행하는 명령어

- 사용예시 : TensorFlow Serving 의 경우 config file 수정 후 재시작 필요

 

 

RM

docker rm

docker rm [OPTIONS] CONTAINER [CONTAINER...]

- 컨테이너 삭제시 사용하는 명령어

- 컨테이너가 실행중이면 삭제할 수 없으므로 중지 후 삭제가 가능하다.

 

 

PRUNE

docker prune

docker CONTAINER prune

- 존재하는 모든 컨테이너를 삭제하는 명령어

- docker stop CONTAINER & docker rm CONTAINER

 

 

INSPECT

docker inspect

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

- Docker Object(네트워크, 이미지, 컨테이너 등) 들의 저수준 레벨의 정보들을 출력하는 명령어

- 메모리 현황 등 리소스를 파악할 수 있다. [ docker container inspect CONTAINER | grep Memory ]

- 디버깅시 유용하게 사용된다.

 

 

UPDATE

docker update

docker update --memory=1g --memory-swap=3g CONTAINER

- inspect 명령어를 통해 조회한 값을 수정하는 명령어

- 위의 명령어로 설정하는 경우 memory와 swap 설정이 적용됨

 

 

CP

docker cp

docker cp [OPTIONS] CONTAINER:[SRC_PATH] [DEST_PATH]

- docker container로 데이터 이전, 반출하는 명령어

- 파일 또는 디렉토리를 옮길 수 있다.

 

 

EXEC

docker exec

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

- 동작중인 컨테이너 내부로 CLI 명령어를 전달한다.

- 특정 구문을 통해 ATTACH 명령어와 동일한 기능 가능 [ docker exec -it CONTAINER /bin/bash ]

  (컨테이너와 통신할 수 있는 tty 오픈)

 

 

ATTACH

docker attach

docker attach CONTAINER 

- 동작중인 컨테이너와 통신할 수 있는 tty 오픈하는 명령어

 

 

BUILD

docker build

docker build [OPTIONS] [DOCKERFILE PATH]

- dockerfile 설정을 통해 이미지를 생성할 수 있는 명령어

- dockerfile 경로의 경우 로컬 또는 URL 모두 사용 가능하다.

- 이미지 생성에 실패했을 때 임시 컨테이너 삭제 [ 사용 : --force-rm=false ]

- 이전 빌드에서 사용되었던 캐시 사용하지 않음 [ 사용 : --no-cache=false ]

  한번 이미지를 build 완료한 경우 캐시가 메모리에 저장되어 추가 build시 시간이 줄어듬

  그 때 사용된 캐시를 사용하지 않고 처음부터 이미지를 생성

  [(캐시를 통해 생성된 경우 생성이 제한되는 경우도 있음 ( 예시 : dockerorde )]

- q : 옵션(--quiet=false)의 약자, dockerfile의 RUN이 실행 된 결과를 표시하지 않음

- t : 옵션(--tag="")의 약자, 이미지 이름의 테그를 설정 [저장소 이름]/[이미지 이름]:[테그]

 

 

COMMIT

docker commit

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

- 컨테이너의 변경사항을 반영하여 새로운 이미지를 생성하는 명령어

 

 

TAG

docker tag

docker tag [IMAGE_NAME] [USERID] / [[REPOSITORY]:TAG]

- 도커 이미지에 레파지토리와 태그를 설정하는 명령어

 

 

PUSH

docker push

docker push [USERID] / [[REPOSITORY]:TAG]

- 레파지토리와 테그를 설정한 이미지를 Docker HUB에 업로드하는 명령어