[Docker] 도커 이미지와 컨테이너

배현호·2021년 8월 2일
0
post-custom-banner

시작하기 전에 이 글을 한 번 확인 부탁드립니다.

도커 이미지와 컨테이너

도커 엔진에서 사용하는 기본 단위는 이미지컨테이너이며, 이 두 가지가 도커의 핵심이다.
이번 포스트에서는 간단한 개념만 짚고 넘어갈 예정이다.

도커 이미지

도커 이미지는 컨테이너를 생성할 때 필요한 요소로, VM을 생성할 때 사용하는 iso 파일과 비슷한 개념이다.
여러 개의 계층으로 된 바이너리 파일이 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용된다.

이미지의 이름은 기본적으로 [저장소 이름]/[이미지 이름]:[태그]의 형태로 구성된다.

alicek106/ubuntu:14.04 = alicek106(저장소 이름)/ubuntu(이미지 이름):14.04(태그)
ubuntu:latest = ubuntu(이미지 이름):latest(태그)
  • 저장소(Repository)
    - 이미지가 저장된 장소
    - 저장소 이름을 명시하지 않은 이미지는 도커에서 기본으로 제공하는 이미지 저장소인 도커 허브(Docker Hub)의 공식(Official) 이미지를 뜻함
    - 이미지를 생성할 때 저장소 이름을 명시할 필요는 없어서 생략하는 경우도 있음
  • 이미지 이름
    - 해당 이미지가 어떤 역할을 하는지 나타냄
    - 이미지 이름은 생략할 수 없어 반드시 설정해야함
  • 태그
    - 이미지의 버전, 혹은 리버전(Revision) 관리에 사용함
    - 일반적으로 14.04와 같은 버전을 명시하지만, 태그를 생략하면 도커 엔진에서는 태그를 latest로 인식함

도커 컨테이너

도커 이미지는 우분투, CentOS 등 기본적인 리눅스 운영체제부터 아파치 웹 서버, MySQL 데이터베이스 등의 각종 애플리케이션, 하둡(Hadoop)이나 스파크(Spark), 스톰(Storm) 등의 빅데이터 분석 도구까지 갖가지 종류가 있다.
이러한 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성되는데, 이것이 도커 컨테이너가 된다.
대부분의 도커 컨테이너는 생성될 때 사용된 도커 이미지의 종류에 따라 알맞은 설정과 파일을 갖고 있어 이미지의 목적에 맞게 사용되는 것이 일반적이다.
도커 이미지로부터 컨테이너를 여러개 생성하면 생성된 컨테이너의 개수만큼 웹 서버가 생성되고, 이 컨테이너들은 외부에 웹 서비스를 제공하는 데 사용된다.

컨테이너는 이미지를 읽기 전용으로 사용하되 이미지에서 변경된 사항만 컨테이너 계층에 저장하여 컨테이너에서 하는 일에 대해서 이미지는 영향을 받지 않는다.
생성된 각 컨테이너는 각기 독립된 파일시스템을 제공 받으며 호스트와 분리되어 있어 특정 컨테이너에서 어떤 애플리케이션을 설치하거나 삭제해도 다른 컨테이너와 호스트는 변화가 없다.

정리

도커 이미지

  • 컨테이너를 생성할 때 필요한 요소
  • 여러 개의 계층으로 된 바이너리 파일이 존재
  • 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용됨
  • 이미지 이름은 기본적으로 [저장소 이름]/[이미지 이름]:[태그] 형식으로 구성됨
    - 저장소 이름을 명시하지 않을 경우 도커 허브의 공식 이미지를 뜻함
    - 이미지 이름은 생략 불가
    - 태그는 보통 버전 관리에 사용되지만, 생략할 경우 자동으로 latest로 지정됨

도커 컨테이너

  • 도커 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 독립된 공간이 생성되는데, 이를 도커 컨테이너 라고 함
  • 보통의 경우, 이미지의 목적에 맞게 사용되는 것이 일반적
  • 도커 이미지로부터 여러 개의 컨테이너를 생성하면 컨테이너 개수만큼 웹 서버가 생성되고 외부에 서비스를 제공할 수 있음
  • 이미지의 변경 사항이 컨테이너 계층에 저장되어 이미지는 컨테이너의 영향을 받지 않음
  • 컨테이너는 각기 독립되어 있으므로 한 컨테이너가 변경되거나 삭제되어도 다른 컨테이너와 호스트에는 변화가 없음
profile
Spring Boot 공부하고 있는 고등학생입니다.
post-custom-banner

0개의 댓글