2 - Docker 이미지 의존관계와 컨테이너

Yoony·2023년 6월 15일
0

Start Docker 

목록 보기
2/3
post-thumbnail

Base Image

Docker 이미지는 베이스 이미지에 필요한 프로그램 및 라이브러리, 소스를 설치한 뒤 파일 하나로 만든 것을 말합니다.

매번 베이스 이미지에 필요한 프로그램과 라이브러리, 소스를 설치하면 용량이 큰 이미지가 중복되어 생성될 것이라고 생각할 수 있습니다. Docker 이미지는 베이스 이미지에서 바뀐 부분만 이미지로 생성하고, 실행할 때는 베이스 이미지와 바뀐 부분을 합쳐서 실행합니다.

유저 랜드

OS는 메모리 사용을 기준으로 커널 공가과 유저 공간으로 나눌 수 있습니다. 여기서 유저 공간에서 실행되는 실행 파일과 라이브러리를 Userland라고 합니다. 리눅스는 커널만으로 부팅할 수 없으므로 부팅에 필요한 최소 실행 파일과 라이브러리 조합을 뜻하기도 합니다.

Docker 이미지

Docker 이미지는 16진수로 된 ID로 구분하고, 각각의 이미지는 독립적입니다. Docker 이미지는 통째로 생성되지 않습니다. 바뀐 부분만 생성한 뒤 부모 이미지를 계속 참조하는 방식으로 동작합니다. 이미지의 의존관계에 대해 Docker에서는 이를 레이어라고 합니다.

예를들어 위 그림에서 centos:centos6 이미지에 서비스 운영에 필요한 프로그램 설치한뒤 Docker 이미지를 생성하면 example:0.1과 같은 형태가 됩니다.

Docker 이미지는 파일이기 때문에 저장소에 올린 뒤 다른 곳에서 받을 수 있습니다. 그리고 저장소에 올릴 때는 자식 이미지, 부모 이미지를 모두 올립니다. 받을 때도 마찬가지로 부모 이미지를 함께 받습니다. 이후에는 내용이 바뀐 이미지만 주고받습니다.

Union mount, Union File System

생성된 Docker 이미지는 읽기 전용 상태입니다. 여기서 내용이 바뀌면 이미지를 수정하지 않고, 쓰기 이미지를 생성한 뒤 내용을 기록합니다. 이러한 방식을
Union mount라고 하며 Union mount를 지원하는 파일시스템을 Union File System이라 합니다.

Docker container

Image build -> Create N container

Docker 컨테이너는 이미지를 실행한 상태입니다. 이미지로 여러개의 컨테이너를 만들 수 있습니다. 운영체제로 보면 이미지는 실행파일이고, 컨테이너는 프로세스입니다. 이미 실행된 컨테이너에서 변경된 부분을 이미지로 생성할 수도 있습니다.

Docker는 특정 파일 또는 스크립트를 위한 실행 환경으로 보면 됩니다. 서버 구성을 미리 해놓은 Docker 이미지를 사용하면 실행할 서버가 몇 개가 되든 손쉽게 해결할 수 있습니다.

profile
Software Quality Engineer

0개의 댓글