도커에서 가장 중요한 개념은 컨테이너와 이미지라는 개념이다.
컨테이너를 만드는데 필요한 모든 파일과 설정값을 가진 읽기전용(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)
레이어만 다운받으면 되기 때문에 굉장히 효율적으로 이미지를 관리할 수 있다.
이미지를 기반으로 독립된 공간에서 실행한 가상환경을 의미
📎 참고 링크