시작하세요! 도커/쿠버네티스의 내용을 공부하여 정리한 포스트입니다! 🌈
도커 이미지는 컨테이너를 생성할 때 필요한 요소입니다. 여러 개의 레이어로 구성된 바이너리 파일이 존재하며, 컨테이너를 생성하고 실행할 때 읽기 전용(read-only)으로 사용됩니다. 도커 명령어로 이미지를 설치할 수 있습니다.
도커에서 사용하는 이미지의 이름은 <저장소 이름>/<이미지 이름>:<태그> 형태로 구성됩니다. (ex. rhee519/ubuntu:14.04 또는 ubuntu:latest)
도커 공식 이미지 저장소에 있는 이미지를 로컬로 다운로드합니다.
docker pull centos:7
# docker pull <이미지 이름>
Output
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
도커 엔진에 존재하는 이미지 목록을 출력합니다.
docker images
Output
REPOSITORY TAG
IMAGE ID CREATED SIZE
test-image latest
be7c63980e29 2 days ago 142MB
...
도커 이미지는 우분투 등의 리눅스 운영체제 뿐만 아니라 아파치 웹 서버, MySQL, 하둡, 스파크 등... 수많은 종류가 있습니다! 용도에 맞는 이미지를 골라 컨테이너를 생성하면 목적에 맞는 파일 시스템과 격리된 시스템 자원 & 네트워크를 사용할 수 있는 독립된 공간이 생성되는데, 이것이 바로 도커 컨테이너입니다.
컨테이너는 이미지를 읽기 전용으로 사용하고, 이미지를 변경한 사항은 컨테이너 계층에 저장하기 때문에 원본 이미지에는 영향을 미치지 않습니다.
컨테이너 생성 명령어는 docker create
또는 docker run
입니다.
docker create -it --name centos-test centos:7
# 컨테이너 생성만 하고 실행하지는 않는다
docker run -it ubuntu:14.04
# 컨테이너를 생성하고 실행한다
# -i: 현재 터미널에서 컨테이너 내부와 상호 입출력
# -t: tty 활성화하여 bash shell 이용
# --name: 생성할 컨테이너의 이름을 지정함
Output
# docker create
1b65c5c2781407412d4348fe660da61dcc3251f8b2baf33fe16a3a65a0ea08a7 # 컨테이너 고유 ID
# docker run
Unable to find image 'ubuntu:14.04' locally
14.04: Pulling from library/ubuntu
2e6e20c8e2e6: Pull complete
0551a797c01d: Pull complete
512123a864da: Pull complete
Digest: sha256:60840958b25b5947b11d7a274274dc48ab32a2f5d18527f5dae2962b64269a3a
Status: Downloaded newer image for ubuntu:14.04
root@71f5affb533a:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
docker run
명령으로 지정한 도커 이미지가 로컬에 저장되어있으면 그 이미지를 이용해 컨테이너를 생성하고, 없으면 도커 공식 이미지 저장소에서 해당 도커 이미지를 pull하여 컨테이너를 생성합니다.
exit
또는 Ctrl+D
컨테이너 내부에서 빠져나오고 컨테이너를 정지Ctrl+P, Q
컨테이너를 정지하지 않고 탈출docker start <컨테이너 이름>
컨테이너 실행(시작)docker attach <컨테이너 이름>
컨테이너를 실행하고 진입docker exec -it <컨테이너 이름> /bin/bash
컨테이너에서 bash를 실행하고 터미널 유지docker ps
실행중인 컨테이너 목록 출력docker ps -a
모든 컨테이너 목록 출력docker stop <컨테이너 이름> # 컨테이너 중지
docker rm <컨테이너 이름> # 컨테이너 삭제
# 또는
docker rm -f <컨테이너 이름> # 컨테이너 강제로 삭제
# 또는
docker container prune # 정지 상태인 모든 컨테이너 삭제
# 또는
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
# docker ps -aq: 모든 컨테이너(-a)의 ID만(-q) 출력