Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Dockerfiles 작성 Best Practice

Info
titleBest practices for writing Dockerfiles.

https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

...

  • FROM : ubuntu:15.04 Docker 이미지 레이어를 만듭니다 .
  • COPY : Docker 클라이언트의 현재 디렉토리에서 파일을 추가합니다.
  • RUN make응용 프로그램을 빌드합니다. 
  • CMD : 컨테이너 내에서 실행할 명령을 지정합니다.

이미지 및 레이어

Info

이미지 레이어 및 Docker가 이미지를 빌드하고 저장하는 방법에 대한 자세한 내용은 스토리지 드라이버 정보를 참조하십시오 .



컨테이너 및 레이어


Info
title동일한 이미지를 공유하는 컨테이너들 예


디스크의 컨테이너 크기

Code Block
[root@k8s-worker01 ~]# docker ps -s
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES               SIZE
6d210e7eb353        registry            "/entrypoint.sh /e..."   5 seconds ago       Up 3 seconds        5000/tcp            kickass_poitras     0 B (virtual 25.8 MB)
[root@k8s-worker01 ~]#
[root@k8s-worker01 ~]# docker run -d registry -name registry2
950068eff13574017649a0c3fc8f84047da4978204c68c23074580e5dbce0d02
[root@k8s-worker01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
6d210e7eb353        registry            "/entrypoint.sh /e..."   7 minutes ago       Up 7 minutes        5000/tcp            kickass_poitras
[root@k8s-worker01 ~]# docker ps -s
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES               SIZE
6d210e7eb3532c7c287be3e2        registry:2            "/entrypoint.sh /e..."   78 minutesseconds ago       Up 76 minutesseconds        5000/tcp            kickass_poitras     musing_kowalevski   0 B (virtual 25.8 MB)
1cdfdfe3c2d6        registry            "/entrypoint.sh /e..."   17 seconds ago      Up 15 seconds       5000/tcp            musing_blackwell    0 B (virtual 25.8 MB)
[root@k8s-worker01 ~]# 

  • size: 각 컨테이너의 쓰기 가능한 계층에 사용되는 데이터 양 (디스크에 있음).

  • virtual size: 컨테이너에서 사용하는 읽기 전용 이미지 데이터와 컨테이너의 쓰기 가능한 레이어에 사용되는 데이터의 양입니다 size. 여러 컨테이너가 일부 또는 모든 읽기 전용 이미지 데이터를 공유 할 수 있습니다. 동일한 이미지에서 시작된 두 개의 컨테이너는 읽기 전용 데이터의 100 %를 공유하는 반면 공통 레이어를 가진 서로 다른 이미지를 가진 두 개의 컨테이너는 공통 레이어를 공유합니다. 따라서 가상 크기를 합산 할 수는 없습니다. 이것은 잠재적으로 중요한 디스크 사용량을 과소 평가합니다.


불필요한 Layer가 생성되지 않도록 권장 합니다.

Not Bed

Info
ADD http://example.com/big.tar.xz /usr/src/things/
RUN tar -xJf /usr/src/things/big.tar.xz -C /usr/src/things
RUN make -C /usr/src/things all

...

Info
RUN mkdir -p /usr/src/things \
    && curl -SL http://example.com/big.tar.xz \
    | tar -xJC /usr/src/things \
    && make -C /usr/src/things all


Docker 공식 이미지

Info

https://docs.docker.com/docker-hub/official_images/


Dockerfile Reference

Info

https://docs.docker.com/engine/reference/builder/