반응형
말랑Cow
IT
말랑Cow
전체 방문자
오늘
어제
  • 분류 전체보기 (165)
    • Linux (33)
    • Windows (6)
    • Network (7)
    • Hardware (10)
    • Zabbix (13)
    • python (9)
    • script (0)
    • docker (16)
    • NAS (1)
    • DB (3)
    • php (33)
    • jQuery (1)
    • 정보보안기사 (0)
    • Ajax (1)
    • Javascript (21)
    • DELL (0)
    • HPE (0)
    • Secui (0)
    • AWS (2)
    • Elastic (0)
    • 보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • jQuery
  • 서버
  • 자빅스
  • 네트워크
  • JavaScript
  • 리눅스
  • php 클래스
  • 파이썬
  • Shell
  • Linux
  • php
  • php 객체
  • 모니터링
  • Python
  • bash
  • 도커
  • ZABBIX
  • 자바스크립트
  • docker
  • CentOS
hELLO · Designed By 정상우.
말랑Cow

IT

docker

도커 컨테이너 다루기(9) - Dockerfile로 빌드할 때 주의할 점

2021. 6. 4. 00:00
반응형

Dockerfile을 사용할 때 좋은습관이라는 것이 있습니다.

RUN apt-get install A \
B \
C \

위처럼 역슬래쉬로 나눠서 가독성을 높이거나,

.dockerignore 파일을 작성해 불필요한 파일을 빌드 컨텍스트에 포함하지 않는 것이 있습니다.

 

Dockerfile을 아무렇게나 작성하면 저장 공간을 불필요하게 차지하는 이미지나 레이어가 너무 많은 이미지가 생성될 수 있습니다.

 

[root@localhost dockerfile]# vi dockerfile 

FROM ubuntu:18.04
RUN mkdir /test
RUN fallocate -l 100m /test/dummy
RUN rm /test/dummy

fallocate 명령어로 100MB 크기의 파일을 가상으로 만들어 /test/dummy 에 할당한 후 rm으로 삭제하는 내용입니다.

일반적으로 생각하면 ubuntu:18.04 이미지와 크기가 동일해야 합니다.(100MB 파일을 결국 지웠으니까요)

 

[root@localhost dockerfile]# docker build . -t falloc_100mb:0.0
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM ubuntu:18.04
...
...
...
Successfully built eadb7ca6c589
Successfully tagged falloc_100mb:0.0
[root@localhost dockerfile]#
[root@localhost dockerfile]# docker images | grep falloc
falloc_100mb     0.0           eadb7ca6c589   12 seconds ago   168MB
[root@localhost dockerfile]# docker images | grep ubuntu
ubuntu           18.04         81bcf752ac3d   2 weeks ago      63.1MB

빌드 후 두 개의 이미지를 비교해보면 100MB 정도 차이가 나는것을 확인할 수 있습니다.

이는 컨테이너를 이미지로 생성할 때 변경된 사항만 새로운 이미지 레이어로 생성하는 방식의 단점 중 하나입니다.

RUN rm /test/dummy 명령어로 파일을 삭제하더라도 "삭제했다" 는 변경사항으로서의 레이어로 새롭게 저장됩니다.

즉, 실제 100MB 크기의 파일은 이전 레이어에 남아있습니다.

실제로 사용하지 못하는 파일이 이미지 레이어로 존재하기 때문에 저장 공간은 차지하지만 실제로 의미없는 공간이 됩니다.

 

RUN mkdir /test && \
fallocate -l 100m /test/dummy && \
rm /test/dummy

RUN이 하나의 이미지 레이어가 된다는 것을 생각해보면 위처럼 역슬래쉬로 하나로 묶으면 방지할 수가 있습니다.

반응형

'docker' 카테고리의 다른 글

도커 컨테이너 다루기(11) - 도커데몬[2]  (0) 2021.06.08
도커 컨테이너 다루기(10) - 도커데몬[1]  (0) 2021.06.05
도커 컨테이너 다루기(8) - 도커파일(Dockerfile)[2]  (1) 2021.06.03
도커 컨테이너 다루기(8) - 도커파일(Dockerfile)[1]  (1) 2021.06.01
도커 컨테이너 다루기(7) - 도커 이미지(Image)  (0) 2021.05.31
    'docker' 카테고리의 다른 글
    • 도커 컨테이너 다루기(11) - 도커데몬[2]
    • 도커 컨테이너 다루기(10) - 도커데몬[1]
    • 도커 컨테이너 다루기(8) - 도커파일(Dockerfile)[2]
    • 도커 컨테이너 다루기(8) - 도커파일(Dockerfile)[1]
    말랑Cow
    말랑Cow

    티스토리툴바