Dockerfiles 작성 Best Practice

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


FROM ubuntu:15.04
COPY . /app
RUN make /app
CMD python /app/app.py

이미지 및 레이어

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



컨테이너 및 레이어



디스크의 컨테이너 크기

[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
6d210e7eb353        registry            "/entrypoint.sh /e..."   7 minutes ago       Up 7 minutes        5000/tcp            kickass_poitras     0 B (virtual 25.8 MB)
[root@k8s-worker01 ~]#


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

Not Bed

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


Best

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 공식 이미지

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