# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# ubuntu 컨테이너의 현재 상태를 my_ubuntu:v1 이미지로 생성
$ docker commit -a fastcampus -m “First Commit” ubuntu my_ubuntu:v1
author
message
FROM nginx
RUN apk add --no-cache python3 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
FROM : node:12-alpine 이미지를 import, 가져온 이미지 내부에서 컨테이너 이미지를 빌드
누군가가 만들어 놓은 이미지에 필요한 부분을 추가
만들어진 컨테이너의 레이어층을 보면 FROM 에서 사용한 nginx 이미지가 별도의 레이어층으로 구성되어 있음을 알 수 있다. 기존 이미지의 layer 는 유지된 채로 추가 layer 가 생성됨
RUN : 이미지 빌드 과정에서 필요한 커맨드
WORKDIR : 쉘의 cd 명령어처럼 컨테이너 상에서 작업 디렉토리로 전환을 위해 사용, 컨테이너의 /app 경로로 이동
COPY : 호스트 컴퓨터에 있는 디렉터리나 파일을 Docker 이미지의 파일 시스템으로 복사
COPY . . 의 의미는 이미지를 빌드한 디렉터리의 모든 파일을 컨테이너의 app/ 디렉터리로 복사하는 것을 의미
CMD : RUN은 이미지 빌드 시 항상 실행되고, CMD는 이미지를 container로 띄울 때 딱 한 번 실행
# docker build [OPTIONS] PATH
# ./ 디렉토리를 빌드 컨텍스트로 my_app:v1 이미지 빌드 (Dockerfile 이용)
$ docker build -t my_app:v1 ./
# ./ 디렉토리를 빌드 컨텍스트로 my_app:v1 이미지 빌드 (example/MyDockerfile 이용)
$ docker build -t my_app:v1 -f example/MyDockerfile ./