> For the complete documentation index, see [llms.txt](https://kde6260.gitbook.io/dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kde6260.gitbook.io/dev/docker/undefined.md).

# 이미지, 레이어

#### 이미지(Image)

* 컨테이너 실행에 필요한 파일과 config 등을 포하는 것. 상태값을 가지지 않고 변하지 않는다.&#x20;
* 컨테이너는 이미지를 실행한 상태.
* 1개 이미지에서 여러개의 컨테이너를 생성할 수 있다.
* 컨테이너의 상태가 바뀌거나 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.
* 예) 우분투 이미지는 우분투를 실행하기 위한 모든 파일을 가지고 있다.
* 예) mysql 이미지는 debian을 기반으로 mysql을 실행하는 데 필요한 파일과 명령어,  포트정보 등을 가지고 있다.
* 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있으므로 이미지만 있으면 여러 파일을 설치하고 컴파일할 필요가 없다.
* 이미지는 url 방식으로 관리하며 태깅이 가능하다.&#x20;

![도커 이미지 경로](https://1792721125-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lo8iAG2zHsS2e9mIAqX%2F-Lo8s2NYYKxJB4DmyG10%2F-Lo8sIGSHAe_yAndpP9x%2Fimage-url.png?alt=media\&token=f0e8cb9d-438a-4ee7-90eb-8c017eafd036)

도커 이미지는 컨테이너를 실행하기 위한 모든 정보를 담고있기 때문에 용량이 커질 수 밖에 없다. 1개의 이미지 용량이 커지는 것을 해결하기 위해 레이어(layer)라는 개념을 사용한다.

#### 레이어(layer)

* 이미지는 여러개의 읽기 전용(read-only) 레이어로 구성한다.
* 이미지에 파일을 추가하거나 수정하면 새로운 레이어가 생성된다.
* 우분투 이미지가 레이어 `A + B + C` 의 조합이라면 우분투에 설치된 nginx의 레이어는 `A + B + C + nginx`  조합이 된다. 우분투 위에 nginx를 설치하고 nginx의 뒷단에서 도는 webapp 을 이미지로 만든다면 레이어는  `A + B + C + nginx + webapp` 조합이 된다.
* webapp 의 레이어를 수정하면 A, B, C, nginx 레이어를 제외한 새로운 레이어만 수정하고 다운로드 할 수 있기 때문에 효율적으로 이미지를 관리할 수 있다.

출처

{% embed url="<https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html>" %}

{% embed url="<https://docs.docker.com/engine/reference/builder/>" %}
