기계는 거짓말하지 않는다

Docker 이미지 레이어(layer) 병합(Merge), 이미지 압축 본문

Container Tools/Docker

Docker 이미지 레이어(layer) 병합(Merge), 이미지 압축

KillinTime 2024. 2. 29. 22:51

Docker 이미지의 레이어가 많이 쌓여있고, 이미지 크기가 커졌다면 병합할 수 있는 방법이다.

 

Docker 이미지의 history를 확인하면 Dockerfile에서 생성되거나

컨테이너에서 생성된 이미지의 명령어 히스토리를 볼 수 있다.

 

docker inspect 명령어를 확인하면 적용된 환경 변수(Env)도 확인이 가능하다.

 

Dockerfile이 존재한다면 명령어들만 수정하여 이미지를 새로 빌드 하면 되지만

Dockerfile 없이 컨테이너로 이미지를 생성했다면, 아래와 같은 방법을 사용할 수 있다.

우선 빈 도커 이미지를 생성한다.

빈 도커 이미지 생성

 

빈 도커 이미지(empty docker image) 생성

Docker Hub에서 제공하는 빈 이미지인 scratch를 사용하여 빈 도커 이미지를 생성할 수 있다. Link: Docker Hub scratch scratch - Official Image | Docker Hub This image is most useful in the context of building base images (such as de

machine-does-not-lie.tistory.com

그 후 Dockerfile을 작성한다.

컨테이너를 생성할 때 적용된 환경 변수와 필요한 명령어도 꼭 넣어주어야 하기 때문에

docker inspect 명령어로 확인하여 작성한다.

# 현재 존재하는 컨테이너 기반 이미지
FROM exists_image:0.1 as initial
# 빈 이미지
FROM empty_image

COPY --from=initial / /
CMD ["/bin/bash", "-i"]
# 적용할 환경 변수, 명령어 등등
ENV ...
RUN ...
...

작성 후 docker build 명령어로 이미지를 다시 빌드하고 생성된 이미지의 레이어와 이미지 크기를 확인한다.

ex) docker build -t exists_image:0.2 -f Dockerfile.custom /path/to/Dockerfile_directory

Comments