You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
데이터 저장의 효율성과 빌드 시간의 단축, registry로의 pull/push를 빠르게하기 위함이다.
https://kimjingo.tistory.com/62
$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
9fda8d8052c6: Already exists ➡️ 이미 존재하는 레이어는 다운로드하지 않는다.
Digest: sha256:7144f7bab3d4c2648d7e59409f15ec52a18006a128c733fcff20d3a4a54ba44a
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
✔️ 쓰기 가능 레이어
docker run 명령을 이용해 이미지로 컨테이너를 생성하면 기존의 이미지 레이어들 위에 container layer가 생성된다.
기존 이미지 레이어는 Read-Only 레이어이고, 기존 레이어 위에 새로 생성된 레이어는 Read-Write 레이어이다.
실행 중인 컨테이너는 모든 변화를 writable layer에 기록하고, 컨테이너가 종료될 경우 같이 소멸된다.
45일차에 도커 writable layer에 대한 언급이 나와 이에 대해 좀 더 알아보았습니다.
Writable Layer (쓰기 가능 레이어)
https://kimjingo.tistory.com/62
✔️ 도커 이미지의 Layer 구조 확인
✔️ 레이어 구조를 가지는 이유
데이터 저장의 효율성과 빌드 시간의 단축, registry로의 pull/push를 빠르게하기 위함이다.
https://kimjingo.tistory.com/62
$ docker pull alpine Using default tag: latest latest: Pulling from library/alpine 9fda8d8052c6: Already exists ➡️ 이미 존재하는 레이어는 다운로드하지 않는다. Digest: sha256:7144f7bab3d4c2648d7e59409f15ec52a18006a128c733fcff20d3a4a54ba44a Status: Downloaded newer image for alpine:latest docker.io/library/alpine:latest
✔️ 쓰기 가능 레이어
docker run
명령을 이용해 이미지로 컨테이너를 생성하면 기존의 이미지 레이어들 위에container layer
가 생성된다.기존 이미지 레이어는
Read-Only
레이어이고, 기존 레이어 위에 새로 생성된 레이어는Read-Write
레이어이다.실행 중인 컨테이너는 모든 변화를 writable layer에 기록하고, 컨테이너가 종료될 경우 같이 소멸된다.
SHARED SIZE 행은 이미지가 다른 이미지와 공유하는, 즉 공통 데이터에 해당하는 공간의 용량이다.
UNIQUE SIZE는 해당 이미지에서만 사용하는 공간의 용량이다.
SIZE 행이 각 이미지의 용량이며, SHARED SIZE와 UNIQUE SIZE의 합에 해당한다.
✔️ 레이어로 저장되는 Dockerfile 명령문(Instructions)
Dockerfile
에 정의된 모든 명령문(Instructions)이 레이어가 되는 것은 아니다.RUN
,ADD
,COPY
이 3가지 단계만이 레이어로 저장되고,CMD
,LABEL
,ENV
,EXPOSE
등과 같이 메타 정보를 다루는 부분은 임시 레이어로 생성되지만 저장되지 않아 도커 이미지 사이즈에 영향을 주지 않는다.✔️ 경량의 도커 이미지 생성 방법 → (경량의 도커 이미지 생성 더 알아보기)
이미지 레이어 개수를 줄이자
과거 도커 버전에서는 이미지 레이어 개수가 성능에 영향을 줬다고 한다. 하지만 이제는 그렇지 않다.
그래도 도커 레이어 개수를 줄이는 것은 최적화 측면에서 도움이 된다고 볼 수 있다.
레이어는
RUN
,ADD
,COPY
명령문에서만 생성되기 때문에 아래와 같이 여러 개로 분리된 명령을 체이닝(chaining) 으로 엮어보자.레이어 개수가 적다고 도커 이미지/컨테이너 성능에 영향을 주진 않지만
Dockerfile
가독성과 유지 보수 관점에서 도움이 될 것이다.아래와 같이 단일
RUN
구문으로 체이닝 하면 기존 4개 레이어가 생성되는 것을 1개 레이어로 줄일 수 있다. 그리고 하는 김에 설치할 패키지 순서를 알파벳 순서로 정렬하면 가독성도 높고, 중복 설치를 방지할 수 있는 효과도 있다.The text was updated successfully, but these errors were encountered: