Docker 기초 (10) - 이미지 빌드

1841 단어 devopsdockerdevops

도커 이미지 구조

도커 이미지 구조 = 레이어 아키텍쳐

기본적으로 밑에서 부터 먼저 생성된 레이어라고 할 수 있다.

그림에서 오른쪽으로 갈 수록 이미지가 컨테이너로 레이어가 쌓여가는 모습을 볼 수 있다.

컨테이너내의 이미지 레이어는 Read Only

docker image inspect nginx:latest

위 명령어를 실행해 보면 nginx:latest의 설정이 나오게 되는데 가장 밑부분에 레이어들을 확인 가능하다.

Dockerfile 없이 이미지 생성

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

// ubuntu 컨테이너의 현재 상태를 my_ubuntu:v1 이미지로 생성
docker commit -a simon -m "Initial Commmit" ubuntu my_ubuntu:v1

-a 옵션은 author를 뜻하며 히스토리를 나타낸다

Dockerfile 이용하여 이미지 생성

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로부터 이미지 빌드에 필요한 정보를 도커 데몬에게 전달하기 위한 목적

.dockerignore

특정 디렉토리 혹은 파일 목록을 빌드 컨텍스트에서 제외하기 위한 목적

.gitignore와 동일한 문법

# comment
*/temp*
*/*/temp*
temp?

*.md
!README.md

.dockerignore 예시

좋은 웹페이지 즐겨찾기