이미지, 레이어

이미지(Image)

  • 컨테이너 실행에 필요한 파일과 config 등을 포하는 것. 상태값을 가지지 않고 변하지 않는다.

  • 컨테이너는 이미지를 실행한 상태.

  • 1개 이미지에서 여러개의 컨테이너를 생성할 수 있다.

  • 컨테이너의 상태가 바뀌거나 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.

  • 예) 우분투 이미지는 우분투를 실행하기 위한 모든 파일을 가지고 있다.

  • 예) mysql 이미지는 debian을 기반으로 mysql을 실행하는 데 필요한 파일과 명령어, 포트정보 등을 가지고 있다.

  • 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있으므로 이미지만 있으면 여러 파일을 설치하고 컴파일할 필요가 없다.

  • 이미지는 url 방식으로 관리하며 태깅이 가능하다.

도커 이미지는 컨테이너를 실행하기 위한 모든 정보를 담고있기 때문에 용량이 커질 수 밖에 없다. 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 레이어를 제외한 새로운 레이어만 수정하고 다운로드 할 수 있기 때문에 효율적으로 이미지를 관리할 수 있다.

출처

Last updated