Getting Started: 이미지와 컨테이너

d4v1d·2022년 2월 17일
0

Docker & Kubernetes

목록 보기
5/8
post-custom-banner

개요

시작하세요! 도커/쿠버네티스의 내용을 공부하여 정리한 포스트입니다! 🌈

도커 이미지

도커 이미지는 컨테이너를 생성할 때 필요한 요소입니다. 여러 개의 레이어로 구성된 바이너리 파일이 존재하며, 컨테이너를 생성하고 실행할 때 읽기 전용(read-only)으로 사용됩니다. 도커 명령어로 이미지를 설치할 수 있습니다.

이미지 이름

도커에서 사용하는 이미지의 이름은 <저장소 이름>/<이미지 이름>:<태그> 형태로 구성됩니다. (ex. rhee519/ubuntu:14.04 또는 ubuntu:latest)

  • 저장소(Repository) 이미지가 저장된 장소, 명시되지 않은 경우 도커에서 기본적으로 제공하는 공식 이미지를 의미함
  • 이미지 이름 해당 이미지가 어떤 역할을 하는가?
  • 태그 이미지의 버전, 명시되지 않은 경우 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) 출력
profile
데이터 엔지니어/백엔드 개발자 d4v1d의 개발 일지🐯
post-custom-banner

0개의 댓글