도커 이미지 구조 = 레이어 아키텍쳐
기본적으로 밑에서 부터 먼저 생성된 레이어라고 할 수 있다.
그림에서 오른쪽으로 갈 수록 이미지가 컨테이너로 레이어가 쌓여가는 모습을 볼 수 있다.
컨테이너내의 이미지 레이어는 Read Only
docker image inspect nginx:latest
위 명령어를 실행해 보면 nginx:latest의 설정이 나오게 되는데 가장 밑부분에 레이어들을 확인 가능하다.
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
// ubuntu 컨테이너의 현재 상태를 my_ubuntu:v1 이미지로 생성
docker commit -a simon -m "Initial Commmit" ubuntu my_ubuntu:v1
-a
옵션은 author를 뜻하며 히스토리를 나타낸다
FROM node:12-alpine
RUN apk add --no-cache python3 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
Dockerfile 예시
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 ./
-t
: tag의 약자
-f
: 도커파일의 경로 지정
도커 빌드 명령 수행 시 현재 디렉토리를 빌드 컨텍스트라고 한다
Dockerfile로부터 이미지 빌드에 필요한 정보를 도커 데몬에게 전달하기 위한 목적
특정 디렉토리 혹은 파일 목록을 빌드 컨텍스트에서 제외하기 위한 목적
.gitignore와 동일한 문법
# comment
*/temp*
*/*/temp*
temp?
*.md
!README.md
.dockerignore 예시