지금까지 도커에 대한 성능 비교부터 도커허브 등 다양하게 알아보았습니다.
앞으로의 포스팅은 다양한 환경에서 설치 및 실무 환경 구축 중심으로 진행될 예정이므로
이번 포스팅에서는 Docker Command 명령어에 대해 미리 알아보도록 하겠습니다.
COMMANDS
위의 이미지로 정리한 명령어 처럼 22개만 알면 Docker의 활용은 완벽하게 진행하실 수 있습니다.
SEARCH
docker search centos
- Docker HUB에 공유되어 있는 images 찾는 명령어
- 공식 이미지의 경우 앞에 " / " (슬래쉬)가 없는 특징이 있다.
- 일반 사용자가 배포한 이미지의 경우 ex) jbookes/centos 처럼 슬러쉬 앞쪽에 이름이 붙어 있다.
PULL
docker pull centos:latest
- Docker HUB로 부터 images를 다운받는 명령어
IMAGES
dokcer images
- HOST OS에 다운 받아져 있는 images 목록을 출력하는 명령어
RMI
docker rmi IMAGE
- docker image를 삭제할 때 사용한다.
- image를 사용하여 컨테이너를 생성한 경우 컨테이너를 제거해야 이미지도 제거할 수 있다.
CREATE
docker create -i -t --name [CONTAINER] [IMAGE]
- 특정 docker image를 기반으로 container로 생성하는 명령어
- i : interative의 약자, 상호 입출력하는 옵션
- t : tty를 활성화해서 bash 셸을 사용하는 옵션
- 일반적으로 i와 t는 터미널 입력을 위한 옵션으로 사용 됨. ( -it 또는 -i -t )
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 CONTAINER ls -a
- 생성된 컨테이너 리스트 조회
- CONTAINER ID / IMAGE / COMMAND / CREATED / STATUS / PORTS / NAMES 확인 가능
- CONTAINER ID : 컨테이너별 독립 아이디
- IMAGE : Build한 이미지의 아이디
- COMMAND : 설정된 Command 확인
- CREATED : 컨테이너 생성일
- STATUS : 컨테이너 실행일
- PORTS : 포트포워딩 설정 확인
- NAMES : 설정한 컨테이너 이름(중복불가)
RENAME
docker rename OLD_CONTAINER NEW_CONTAINER
- 컨테이너 이름 변경 명령어
STOP
docker stop CONTAINER
- 실행중인 컨테이너를 종료한다
- 특정 옵션이 있는 경우 자동으로 삭제됨 (--rm 옵션을 통해 컨테이너를 생성한 경우)
START
docker start CONTAINER
- 생성된 컨테이너를 실행하는 명령어
RESTART
docker restart CONTAINER
- 생성된 컨테이너를 재실행하는 명령어
- 사용예시 : TensorFlow Serving 의 경우 config file 수정 후 재시작 필요
RM
docker rm [OPTIONS] CONTAINER [CONTAINER...]
- 컨테이너 삭제시 사용하는 명령어
- 컨테이너가 실행중이면 삭제할 수 없으므로 중지 후 삭제가 가능하다.
PRUNE
docker CONTAINER prune
- 존재하는 모든 컨테이너를 삭제하는 명령어
- docker stop CONTAINER & docker rm CONTAINER
INSPECT
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
- Docker Object(네트워크, 이미지, 컨테이너 등) 들의 저수준 레벨의 정보들을 출력하는 명령어
- 메모리 현황 등 리소스를 파악할 수 있다. [ docker container inspect CONTAINER | grep Memory ]
- 디버깅시 유용하게 사용된다.
UPDATE
docker update --memory=1g --memory-swap=3g CONTAINER
- inspect 명령어를 통해 조회한 값을 수정하는 명령어
- 위의 명령어로 설정하는 경우 memory와 swap 설정이 적용됨
CP
docker cp [OPTIONS] CONTAINER:[SRC_PATH] [DEST_PATH]
- docker container로 데이터 이전, 반출하는 명령어
- 파일 또는 디렉토리를 옮길 수 있다.
EXEC
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
- 동작중인 컨테이너 내부로 CLI 명령어를 전달한다.
- 특정 구문을 통해 ATTACH 명령어와 동일한 기능 가능 [ docker exec -it CONTAINER /bin/bash ]
(컨테이너와 통신할 수 있는 tty 오픈)
ATTACH
docker attach CONTAINER
- 동작중인 컨테이너와 통신할 수 있는 tty 오픈하는 명령어
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 [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
- 컨테이너의 변경사항을 반영하여 새로운 이미지를 생성하는 명령어
TAG
docker tag [IMAGE_NAME] [USERID] / [[REPOSITORY]:TAG]
- 도커 이미지에 레파지토리와 태그를 설정하는 명령어
PUSH
docker push [USERID] / [[REPOSITORY]:TAG]
- 레파지토리와 테그를 설정한 이미지를 Docker HUB에 업로드하는 명령어
'DevOps > Docker' 카테고리의 다른 글
[ Docker #06 도커 설치하기 ] - M1 Macbook Docker install (0) | 2021.07.29 |
---|---|
[ Docker #05 알아보기 4/5 ] - Docker HUB(도커허브) 사용법 (0) | 2021.02.13 |
[ Docker #03 알아보기 3/5 ] - VM vs Docker 성능비교 (0) | 2021.02.09 |
[ Docker #02 알아보기 2/5 ] -Docker Engine과 용어 이해 (0) | 2021.02.01 |
[ Docker #01 알아보기 1/5 ] - 도커란 무엇인가? (1) | 2021.01.30 |