728x90
🐳도커 이미지(Image)와 컨테이너(Container)
도커에서 가장 중요한 개념은 컨테이너와 이미지라는 개념이다.
이미지 (Image)
컨테이너를 만드는데 필요한 모든 파일과 설정값을 가진 읽기전용(Read-only) 템플릿.
실행에 필요한 파일과 설정값 등을 포함하고 있는 도커파일을 만든 후 DockerFile을 빌드하여 이미지를 생성한다.
하나의 이미지로 여러 개의 도커 컨테이너를 생성할 수 있으며 도커 이미지를 수정하여도 이미 생성하여 실행 중인 도커 컨테이너에는 영향을 주지 않는다.
- 마치 도넛 레시피로 도넛을 만들고 도넛 레시피를 변경한 것과 같다.
Docker 레이어(Layer) 저장방식
도커 이미지의 내용이 일부 수정되었을 때 도커 이미지에 들어있는 모든 파일들을 다시 다운 받는 것은 매우 비효율적이다.
이를 해결하기 위해 Layer라는 개념을 사용하여 유니온 파일 시스템을 이용하여 여러개의 레이어를 하나의 파일 시스템으로 사용할 수 있게 해준다.
- ubuntu 이미지가 `A` + `B` + `C`의 집합이라면, ubuntu 이미지를 베이스로 만든 nginx 이미지는 `A` + `B` + `C` + `nginx`가 된다.
webapp 이미지를 nginx 이미지 기반으로 만들었다면 예상대로 `A` + `B` + `C` + `nginx` + `source` 레이어로 구성된다.
webapp에서 `source`를 수정하면 `A`, `B`, `C`, `nginx` 레이어를 제외한 새로운 `source(v2)` 레이어만 다운받으면 되기 때문에 굉장히 효율적으로 이미지를 관리할 수 있다.
컨테이너 (Container)
이미지를 기반으로 독립된 공간에서 실행한 가상환경을 의미
- 도커 이미지를 실행하면 컨테이너가 생성된다.
- 이미지로 컨테이너를 생성하면 이미지의 목적에 맞는 파일이 들어있는 파일 시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성된다. 이것이 바로 컨테이너이다.
📎 참고 링크
반응형
'DevOps > Docker' 카테고리의 다른 글
[Docker] Docker 이미지 만들고 컨테이너 생성하기 (0) | 2024.01.31 |
---|---|
[Docker] Docker 컨테이너 실행하기 (2) | 2024.01.26 |
[Docker] 도커의 기본 명령어 (0) | 2024.01.25 |
[Docker] 도커 엔진 아키텍처 (0) | 2024.01.25 |
[Docker] Docker와 컨테이너(Container) 그리고 어플리케이션의 배포 환경의 변화 (VM vs Docker) (1) | 2024.01.25 |