Dockerfiles 작성 Best Practice
Best practices for writing Dockerfiles.
FROM ubuntu:15.04 COPY . /app RUN make /app CMD python /app/app.py
FROM :
ubuntu:15.04
Docker 이미지 레이어를 만듭니다 .COPY
: Docker 클라이언트의 현재 디렉토리에서 파일을 추가합니다.RUN
make
:
응용 프로그램을 빌드합니다.CMD
: 컨테이너 내에서 실행할 명령을 지정합니다.
이미지 및 레이어
컨테이너 및 레이어
동일한 이미지를 공유하는 컨테이너들 예
디스크의 컨테이너 크기
docker ps -s
size
: 각 컨테이너의 쓰기 가능한 계층에 사용되는 데이터 양 (디스크에 있음).virtual size
: 컨테이너에서 사용하는 읽기 전용 이미지 데이터와 컨테이너의 쓰기 가능한 레이어에 사용되는 데이터의 양입니다size
. 여러 컨테이너가 일부 또는 모든 읽기 전용 이미지 데이터를 공유 할 수 있습니다. 동일한 이미지에서 시작된 두 개의 컨테이너는 읽기 전용 데이터의 100 %를 공유하는 반면 공통 레이어를 가진 서로 다른 이미지를 가진 두 개의 컨테이너는 공통 레이어를 공유합니다. 따라서 가상 크기를 합산 할 수는 없습니다. 이것은 잠재적으로 중요한 디스크 사용량을 과소 평가합니다.
불필요한 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