https://docs.docker.com/get-started/docker-concepts/building-images/build-tag-and-publish-an-image/


Explanation

3가지를 학습할 예정

Building images

대부분의 경우에, 이미지는 Dockerfile을 통해 만들어짐. 대부분의 기본 docker build 명령어는 다음과 같은 모습 :

docker build .

. 은  build context에게 경로(Path)나 URL을 제공. 해당 위치에서, 빌더(builder)는 Dockerfile과 다른 참조 파일들을 찾아냄

빌드를 실행하면, 빌더는 base image를 pull 해옴. 만약 필요하다면, Dockerfile에 명시된 지침들(instructions)을 실행함

이전 내용으로 빌드를 수행하면, 이미지는 이름을 갖지 않지만 이미지의 ID를 제공함. 예시를 들자면 다음과 같음 :

docker build .
[+] Building 3.5s (11/11) FINISHED                                              docker:desktop-linux
 => [internal] load build definition from Dockerfile                                            0.0s
 => => transferring dockerfile: 308B                                                            0.0s
 => [internal] load metadata for docker.io/library/python:3.12                                  0.0s
 => [internal] load .dockerignore                                                               0.0s
 => => transferring context: 2B                                                                 0.0s
 => [1/6] FROM docker.io/library/python:3.12                                                    0.0s
 => [internal] load build context                                                               0.0s
 => => transferring context: 123B                                                               0.0s
 => [2/6] WORKDIR /usr/local/app                                                                0.0s
 => [3/6] RUN useradd app                                                                       0.1s
 => [4/6] COPY ./requirements.txt ./requirements.txt                                            0.0s
 => [5/6] RUN pip install --no-cache-dir --upgrade -r requirements.txt                          3.2s
 => [6/6] COPY ./app ./app                                                                      0.0s
 => exporting to image                                                                          0.1s
 => => exporting layers                                                                         0.1s
 => => writing image sha256:9924dfd9350407b3df01d1a0e1033b1e543523ce7d5d5e2c83a724480ebe8f00    0.0s

출력을 통해, 우리는 참조 image를 통해 컨테이너를 실행 가능함 :

docker run sha256:9924dfd9350407b3df01d1a0e1033b1e543523ce7d5d5e2c83a724480ebe8f00

이 이름은 기억하기가 어려움. 그렇기에 tagging은 매우 유용하게 됨

Tagging images

이미지 태깅은 이미지를 기억하기 쉬운 이름으로 설정하는 것. 그러나, 이미지 이름에는 구조(structure)가 존재. 전체 이미지 이름은 다음 구조를 가짐 :

# 반드시 기억해야할 구조
[HOST[:PORT_NUMBER]/]PATH[:TAG]