docker image commit & Push

Docker를 사용하다 보면, 어쩔 수 없이 현재 컨테이너를 종료하고 새롭게 컨테이너를 띄워야 하는 경우가 생깁니다. 예를 들어 새로운 port를 열어준다던가, 폴더를 바인딩하는 경우 컨테이너를 다시 띄워야만 합니다.

하지만, docker를 사용하면서 컨테이너 내부에 추가적으로 이것 저것 설치해놓았다면, 이 상태로 그대로 복구하기란 쉽지 않겠죠. 다행히 docker는 마치 github처럼 현재의 컨테이너 상태를 그대로 저장하여 (commit) Dockerhub에 백업 (push) 할 수 있습니다.

매우 쉽습니다.
명령어 두 줄이면 되니까요.

그럼, 차례차례 따라해보세요.

Commit

docker commit 명령은 컨테이너의 현재 상태 이미지 파일로 생성합니다.
사용중인 컨테이너 내부에 새로운 라이브러리를 설치하는 등 변경사항이 있다면, 이를 반영한 이미지를 생성할 수 있습니다.

#docker commit <옵션> <컨테이너 이름> <이미지 이름>:<태그>
$docker commit tf2 eungbean/tf2:latest

push

DockerHub는 마치 Github와 같습니다.
먼저, DockerHub에 가입하는 것을 잊지 마세요.

# login
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you dont have a Docker ID, head over to https://hub.docker.com to create one.
Username: eungbean
Password:
Login Succeeded

# tag 지정 (생략가능)
# docker tag <이미지 이름>:<태그> <Docker 레지스트리 URL>/<이미지 이름>:<태그>
$ docker tag eungbean/deepo:latest

#push
# docker push <Docker 레지스트리 URL>/<이미지 이름>:<태그>
$ docker push eungbean/deepo:latest
docker push eungbean/deepo:latest                       ✔  1603  13:20:26
The push refers to repository [docker.io/eungbean/deepo]
361824522fc2: Pushing [====>                                              ]  163.7MB/2.041GB
d4cfb11c973d: Mounted from ufoym/deepo
087239f3990e: Mounted from nvidia/cuda
65dd347e5346: Mounted from nvidia/cuda
39d39e5e9701: Mounted from nvidia/cuda
621c51016399: Mounted from nvidia/cuda
145eb658aaf0: Mounted from nvidia/cuda
e6c3a9c7c79e: Mounted from nvidia/cuda
f1dfa8049aa6: Layer already exists
79109c0f8a0b: Layer already exists
33db8ccd260b: Layer already exists
b8c891f0ffec: Layer already exists

이제 완료되었습니다! 여러분은 이제부터 방금 push한 Docker Image를 손쉽게 당겨오고, 공유하고, 업데이트 할 수 있습니다.

그럼 즐거운 항해 되세요!

Comments

Eungbean Lee's Picture

About Eungbean Lee

Lee is a Student, Programmer, Engineer, Designer and a DJ

Seoul, South Korea https://eungbean.github.io