본문 바로가기

CI-CD/Docker

Docker- Docker file

도커 이미지 생성 과정

도커 파일을 통해서 이미지를 위한 설정을 정의해준다. 이후 도커 파일을 도커 클라이언트에게 전달하고, 클라이언트는 이를 도커 서버에 전달한다. 서버에 전달이 완료되면 이미지가 생성되게 된다.

도커 파일

- 도커 파일 생성

도커 파일명은 반드시 Dockerfile로 해 주어야한다. 따라서 한개의 폴더에 하나의 Dockerfile만이 존재할 수 있다.

# 베이스 이미지를 명시해준다. (OS)
FROM ubuntu:latest

# 도커의 변수를 설정해준다.
ENV HELLO_UBUNTU "Ubuntu image install"

# 도커이미지가 생성되기 전에 베이스 이미지 위에서 수행될 shell 명령어
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y nginx 
RUN echo $HELLO_UBUNTU

# 컨테이너 시작시 실행 될 명령어를 명시해준다. 컨테이너가 시작시 실행할 실행 파일 또는 shell 스크립트. CMD는 1회만 사용 가능함.
CMD [ "/bin/bash" ]
  • FROM: 베이스 이미지를 지정한다.
  • RUN: 베이스 이미지 위에서 수행할 shell 명령어를 명시해준다. 이 경우에는 docker run -it ubuntu 한 후 docker exec로 진입 후 shell 명령어를 수행하는 것과 동일하다
  • ENV: 도커의 환경 변수를 등록한다.
  • CMD: command(컨테이너 실행시 시작되는 명령어)를 지정한다.

- 도커 파일 build

이런 식으로 도커 파일을 생성했다면, build 명령어로 docker image를 생성할 수 있다.

$ docker build -t [생성할 이미지 이름:tag] [도커 파일 경로]

나는 "Desktop/dockerfile-folder"라는 경로에 Dockerfile을 생성 해 놓았고 "ricecakessamanko/my_app:latest"라는 이름으로 이미지를 생성하려고 한다. 따라서 이미지를 build하기 위한 명령어는 다음과 같다.

$ docker build -t ricecakessamanko/my_app:latest Desktop/dockerfile-folder

 

그러면 차례로 RUN 명령어가 수행되면서 이런식으로 image가 생성된다.

(base) min@minui-MacBookPro ~ % docker build -t ricecakessamanko/my_app:latest Desktop/dockerfile-folder
[+] Building 34.4s (10/10) FINISHED                                                                                              docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                             0.0s
 => => transferring dockerfile: 558B                                                                                                             0.0s
 => [internal] load metadata for docker.io/library/ubuntu:latest                                                                                 1.8s
 => [auth] library/ubuntu:pull token for registry-1.docker.io                                                                                    0.0s
 => [internal] load .dockerignore                                                                                                                0.0s
 => => transferring context: 2B                                                                                                                  0.0s
 => CACHED [1/5] FROM docker.io/library/ubuntu:latest@sha256:1b8d8ff4777f36f19bfe73ee4df61e3a0b789caeff29caa019539ec7c9a57f95                    0.0s
 => [2/5] RUN apt-get update                                                                                                                    10.7s
 => [3/5] RUN apt-get upgrade -y                                                                                                                 3.9s
 => [4/5] RUN apt-get install -y nginx                                                                                                          17.7s
 => [5/5] RUN echo Ubuntu image install                                                                                                          0.1s
 => exporting to image                                                                                                                           0.2s
 => => exporting layers                                                                                                                          0.2s
 => => writing image sha256:16ef47656a627b5fec98cd8db09b086ab45ceb2ff23bdbda3a7b32915b10827e                                                     0.0s
 => => naming to docker.io/library/ricecakessamanko/my_app:latest                                                                                                    0.0s

What's Next?
  View a summary of image vulnerabilities and recommendations → docker scout quickview

 

'CI-CD > Docker' 카테고리의 다른 글

Docker- Volume  (0) 2024.04.21
Docker- Docker Compose  (0) 2024.04.17
Docker- redis 실행  (0) 2024.04.14
Docker- 명령어  (0) 2024.03.17
Docker -컨테이너와 이미지  (0) 2024.03.12