Buildkit
을 이용하면 여러 단계를 병렬 처리하기에 docker build
보다 이미지 생성 속도가 빠르다.# Dockerfile 작성
FROM ubuntu:18:04
RUN apt-get update && \
apt-get -y install apache2
RUN echo 'Docker Container Application.' > /var/www/html/index.html
RUN mkdir /webapp
# 아파치2에 필요한 환경 변수, 디렉터리, 서비스 실행 등의 정보를 셸 스크립트에 작성하고 실행 권한 부어
RUN echo ... \
... \
chmod 744 /webapp/run_http.sh
EXPOSE 80
CMD /webapp/run_http.sh
# 이미지 빌드
DOCKER_BUILDKIT=1 docker build -t webapp:7.0 .
ADD
명령어에 다운로드한 압축 파일(tar.gz) 지정FROM ubuntu:14.04
MAINTAINER "keven-lee <hylee@dshub.cloud>"
RUN apt-get update && apt-get -y install apche2 vim curl
# 다운로드 한 웹 소스 압축 파일을 아파치 기본 웹페이지 경로에 복사
# ADD 명령어는 압축 파일을 해제하여 경로에 복사하는 장점이 있다.
ADD webapp.tar.gz /var/www/html
WORKDIR /var/www/html
EXPOSE 80
CMD /usr/sbin/apachectl -D FOREGROUND
apt-get clean
, apt-get autoremove
, rm -rfv ~
...
# apt 업데이트 후 필요한 패키지 설치
# 이후 사용했던 apt 캐시를 모두 삭제
RUN apt-get update && \
apt-get install apache2 -y -qq --no-install-recommends && \
apt-get clean -y && \
apt-get autoremove -y && \
rm -rfv /var/lib/apt/lists/* /tmp/* /var/tmp/*
...
apt-get clean
autoclean
을 사용하면 더 이상 설치되어 있지 않은 패키지의 .deb
까지 삭제한다.apt-get autoremove
rm -rfv /tmp/* /var/lib/apt/lists/* /var/tmp/*
.apt
와 연관된 캐시 파일을 모두 삭제한다..dockerignore
파일 작성을 통해 이미지에서 제외할 파일 목록을 작성하는 것도 도움이 된다.docker pull wagoodman/dive:latest
$ docker run --rm -it \
...
wagoodman/dive:latest build -t lab2-webapp:9.0