시작하기 전에 이 글을 한 번 확인 부탁드립니다.
도커 엔진에서 사용하는 기본 단위는 이미지
와 컨테이너
이며, 이 두 가지가 도커의 핵심이다.
이번 포스트에서는 간단한 개념만 짚고 넘어갈 예정이다.
도커 이미지는 컨테이너를 생성할 때 필요한 요소로, 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로 지정됨
- 도커 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 독립된 공간이 생성되는데, 이를 도커 컨테이너 라고 함
- 보통의 경우, 이미지의 목적에 맞게 사용되는 것이 일반적
- 도커 이미지로부터 여러 개의 컨테이너를 생성하면 컨테이너 개수만큼 웹 서버가 생성되고 외부에 서비스를 제공할 수 있음
- 이미지의 변경 사항이 컨테이너 계층에 저장되어 이미지는 컨테이너의 영향을 받지 않음
- 컨테이너는 각기 독립되어 있으므로 한 컨테이너가 변경되거나 삭제되어도 다른 컨테이너와 호스트에는 변화가 없음