728x90
1. Stopping at a specific build stage
- —target option
docker build --target builder -f Dockerfile -t react-b:latest .
The -target option allows you to specify a specific stage at which you'd like to stop. It can be useful if your last step is only used in production or for testing.
- 특정 빌드 단계를 수정할 경우
- test 데이터를 활용해 testing 단계를 사용해보고 실제 데이터로 제품 테스트를 할 경우
- 디버깅 상징이나 도구들이 사용가능한 상태에서 Debug 단계를 사용하고 Production 단계로 갈 경우
2. commit vs build
commit 실행중인 container에서 image를 만듬
docker run -it ubuntu:18.04 bash
# 컨테이너 5e6f5a3a92ed
5e6f5a3a92ed# apt update
5e6f5a3a92ed# apt install -y git
5e6f5a3a92ed# git --version
git version 2.17.1
docker run -it ubuntu:18.04 bash
# 컨테이너 7dc2cf68aa3a
7dc2cf68aa3a# git --version
bash: git: command not found
bash 셸을 종료 후 다시 컨테이너(7dc2cf68aa3a)를 실행 시, git은 존재하지 않음
➡️ 컨테이너는 독립적인 파일 시스템을 가지기 때문
# commit하면서 이미지 만들기😬
docker run -it ubuntu:18.04 bash
# 컨테이너 877c9dd67d76
877c9dd67d76#
# hello와 world라는 파일을 추가
877c9dd67d76# touch hello world
# diff: 컨테이너에서 변경된 항목을 보여줌
# - 비교기준 : 컨테이너를 실행한 docker image 내용
docker diff 877c9dd67d76
A /world
A /hello
# 컨테이너의 파일 공간을 이미지로 저장
# 실제로 새로운 ubuntu:hello-world 이미지 생성
docker commit 877c9dd67d76 ubuntu:hello-world
docker images | grep hello-world
ubuntu hello-world 273cd0702dc8 31 seconds ago 63.3MB
# 이런식으로 이미지 잘 안만듬. 대부분 Dockerfile로 만듬
build Dockerfile을 통해서 image를 만듬
#Dockerfile 🙂
# 1. 우분투 설치
FROM ubuntu:18.04
# 2. 메타데이터 표시
LABEL "purpose"="practice"
# 3. 업데이트 및 아파치 설치
RUN apt-get update
RUN apt-get install apache2 -y
# 설치과정에서 별도의 입력이 불가능하기 때문에 apache2를 설치할 때 뒤에 -y를 붙여줘야 함
RUN apt update && apt install -y git
# 4. 호스트에 있는 파일을 추가
ADD test.html /var/www/html
# 5. 작업공간 이동(=cd)
WORKDIR /var/www/html
# 6. 거기서 test2.html 파일생성
RUN ["/bin/bash", "-c", "echo hello > test2.html"]
# 7. 포트 80번 노출 지정
EXPOSE 80
# 8. 컨테이너 생성시 시작명령어
CMD apachectl -DFOREGROUND
Dockerfile Run 레이어 개수 차이
FROM ubuntu:18.04
RUN apt update
RUN apt install -y git
docker build -t ubuntu:git2 .
FROM ubuntu:18.04
RUN apt update
RUN apt install -y git
docker build -t ubuntu:git2 .
공통점 : 이미지 생성
차이점 : commit은 백업, build는 생성
3. 배포
이미지를 파일로 추출
➡️ .tar 를 확장자로 갖는 압축파일이 생성
docker save -o myubuntu.tar custom_ubuntu:third
도커 이미지 불러오기
docker load -i myubuntu.tar
728x90