본문 바로가기

DevOps/Docker

[Docker] Dockerfile을 사용한 구성 관리

  • Docker 에서는 인프라의 구성관리를 Dockerfile로 한다.
  • 베이스가되는 이미지에 미들웨어를 설치 및 설정, 애플리케이션의 실행 모듈 전개하기 위한 실행 기반의 모든 구성 정보를 기술한다.
  • 즉 Dockerfile은 Docker상에서 작동시킬 컨테이너의 구성정보를 기술하기 위한 파일.
  • docker build 명렁으로 실행

Dockerfile 기본구문

  • 기본예시

 

FROM ubuntu:latest
RUN apt-get install

 

docker build -t image:latest

 

# image 라는 이미지가 생성된다.

 

 


Dockerfile 실습

  • 디렉토리 생성
mkdir docker
cd docker

 

  • Dockerfile 생성
vim Dockerfile

FROM ubuntu:latest

 

  • Dockerfile build 하기
docker build -t myimage:latest .

 

 

  • 결과
docker images

 


이미지의 레이어 구조

  • 이미지의 레이어 구조를 알아보자
vim Dockerfile

# STEP 1. Ubuntu base image
FROM ubuntu:latest

# STEP 2. Nginx install
RUN apt-get update && apt-get install -y -q nginx

# STEP 3. File copy
COPY index.html /usr/share/nginx/html

# STEP 4. Nginx start
CMD ["nginx","-g"."daemon off;"]

 

cat > index.html
Hello World Dockerfile!

 

# ubuntu 이미지를 베이스로 하여

# nginx를 install

# index.html file을 copy 하여

# nginx 실행

 

  • Dockerfile을 실행해보자
docker build -t webap .

 

docker images

 

# webap이 설치됨을 볼 수 있다.

 

  • 우분투 이미지 레이어를 한번 확인해보자
docker image inspect ubuntu:latest

 

  • 방금 생성한 webap 의 레이어를 확인해보자

 

# 우분투의 Layer 4942a1 ... 이 존재함을 알 수 있다.

# 모든 작업마다 무조건 Layer가 생기는건 아니지만, 나머지 두 Layer는 이후 작업들로 인해 추가된것이다.

 


Dockerfile 추가작업

  • Dockerfile을 수정해보자
# STEP 1. Ubuntu base image
FROM ubuntu:latest

# STEP 2. Nginx install
RUN apt-get update && apt-get install -y -q nginx

# STEP 3. File copy
COPY index.html /usr/share/nginx/html

# STEP 3.1 File copy 2
COPY index2.html /sr/share/nginx/html

# STEP 4. Nginx start
CMD ["nginx","-g"."daemon off;"]

 

cat > index2.html
Hello World Dockerfile2!

 

  • 이미지를 빌드해보자
docker build -t webap2 .

 

# Using cashe가 뜨며 기존 정보를 그대로 가져온다

# 도커파일에 3.1 부분을 추가했지만 속도가 굉장히 빠름을 알 수 있다.

 

  • 방금 생성한 webap2에 대한 상세정보를 확인하자. 그중 Layer를 보자

 

docker image inspect webap2

 

webap2

 

  • webap 과 비교해보자

webap

# 맨 마지막 레이어가 추가됨을 볼 수 있다.

 

'DevOps > Docker' 카테고리의 다른 글

[Docker] Container 생성, 시작 및 정지  (0) 2021.09.16
[Docker] Docker 이미지 조작  (0) 2021.09.16
[Docker] 웹 서버 작동해보기  (0) 2021.09.13
[Docker] Docker 설치  (0) 2021.09.13
[Docker] Docker의 개요  (0) 2021.09.13