도커 이미지 생성 과정
도커 파일을 통해서 이미지를 위한 설정을 정의해준다. 이후 도커 파일을 도커 클라이언트에게 전달하고, 클라이언트는 이를 도커 서버에 전달한다. 서버에 전달이 완료되면 이미지가 생성되게 된다.
도커 파일
- 도커 파일 생성
도커 파일명은 반드시 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 |