5.2 이미지 commit

Git이 설치된 우분투 버전을 사용하려면 이미지를 commit해야 합니다. 이것이 의미하는 것은 우분투 이미지를 기반으로 컨테이너를 시작한다는 것입니다. 그리고 git과 같은 소프트웨어를 추가합니다. 이것은 컨테이너 상태를 수정했음을 의미합니다. 따라서 컨테이너의 현재 상태를 이미지로 저장해야 git이 반영된 컨테이너를 시작할 수 있습니다.

이전 섹션에서 사용한 컨테이너를 exit로 종료하고 아래의 단계를 수행합니다.

이번에는 --rm flag없이 우분트 기반의 컨테이너를 시작합니다.

grouq:~ giljae$ docker run -it --name mycontainer1 ubuntu:latest root@767b7e13efa8:/#

아래 명령을 통해 패키지를 업데이트하고 Git을 설치합니다.

root@767b7e13efa8:/# apt-get update root@767b7e13efa8:/# apt-get install git

설치가 완료되면 아래의 명령을 통해 Git이 설치되어 있는지 확인합니다.

root@767b7e13efa8:/# git --version git version 2.17.1

exit를 입력하여 컨테이너를 종료합니다. 아래의 명령어를 입력하여 mycontainer1을 확인합니다.

grouq:~ giljae$ docker ps -all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 767b7e13efa8 ubuntu:latest "/bin/bash" 4 minutes ago Exited (0) 45 seconds ago mycontainer1

mycontainer1은 현재 종료 상태입니다. docker commit 명령을 통해 컨테이너 이미지를 커밋합니다.

사용법:

docker commit [ContainerID] [Repository [:Tag]]

이 경우 mycontainer1에 이름을 부여했기에 컨테이너 아이디 대신 사용할 수 있습니다. 해당 컨테이너에 이름을 부여하지 않은 경우에는 docker ps -all 명령에 표시된 컨테이너 ID를 사용해야 합니다.

Repository의 이름이 중요합니다. 마지막에는 Docker Hub로 Push할 계획이기에 권장되는 저장소 이름의 형식은 아래와 같습니다.

<dockerhub_username>/<repository_name>

이번 예제의 경우 repository_name은 ubuntu-git으로 할 예정이기에 <dockerhub_username>의 값을 자신의 사용자 이름으로 대체해야 합니다.

태그를 제공하지 않으면 “latest”로 표시됩니다. 저의 경우 dockerhub_username이 giljae이기에 아래와 같이 commit합니다.

grouq:~ giljae$ docker commit mycontainer1 giljae/ubuntu-git sha256:bf60f2de446a91f1a8345f6131c75603994dd53f7146f965fa7fed3a9c370ca0

이렇게 하면 이미지 ID가 다시 생성됩니다. 이제 Docker 이미지 목록을 확인해봅시다.

grouq:~ giljae$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE giljae/ubuntu-git latest bf60f2de446a 27 seconds ago 186MB httpd latest 2ae34abc2ed0 2 weeks ago 165MB ubuntu latest 775349758637 6 weeks ago 64.2MB alpine latest 965ea09ff2eb 7 weeks ago 5.55MB

목록 맨 위에 방금 commit한 이미지가 존재하는 것을 확인할 수 있습니다. 이는 리포지토리 giljae/ubuntu-git이 생성되었음을 의미합니다.