Docker

[Docker] 나의 컨테이너 백업하기

먹세 2021. 9. 24. 16:45

docker container 로 서버 세팅 등 작업을 다 해놨다면

그대로 이미지로 떠서 dockerhub 레포지토리에 업로드 해놓고

나중에 다른환경에서도 바로 pull 받아서 사용할 수 있다.

git과 비슷하게 생각하면 된다.

 

 

1. dockerhub에서 해당 이미지를 관리할 레포지토리 생성

2. 컨테이너를 commit 해서 hub에 올릴 image를 생성

3. 생성한 image를 dockerhub 로 push

4. image를 pull 받아서 사용

 

 

1. dockerhub에서 해당 이미지를 관리할 레포지토리 생성

https://hub.docker.com/repositories

 

Docker Hub

 

hub.docker.com

도커허브에 계정을 생성하고

Repositories 메뉴 -> Create Repository

눌러서 레포지토리 이름을 생성

생성된 레포지토리 -

docker push dockingmosei/laravel8:tagname

이 레포지토리를 사용하기 위해서는 이렇게 push 하라고 가이드를 해줌

 

 

 

2 컨테이너를 commit 해서 hub에 올릴 image를 생성

컨테이너 내에서 환경세팅 작업이 끝났다는 가정 하에.

# image 이름은 dockerhub에 생성한 레포지토리와 동일한 이름으로 맞춰야 함
# tag는 1.0, latest 등 본인의 전략대로
$ docker commit container dockingmosei/laravel8:latest

# image가 잘 만들어졌는지 확인
$ docker images

 

 

3. 생성한 image를 dockerhub 로 push

# dockerhub 계정으로 login
$ docker login

# dockerhub 로 이미지 push
# 레포지토리명과 이미지명이 동일하게 한 이유
$ docker push dockingmosei/laravel8:latest

The push refers to repository [docker.io/dockingmosei/laravel8]
5d8dc70e5d89: Layer already exists
3208a8c846fe: Layer already exists
28889a4d5e89: Layer already exists
4942a1abcbfa: Layer already exists
latest: digest: sha256:1e49bbf8ab7f144d161d262b2eca217854781e804c9ea62506ae160c6acef0a4 size: 1164

repository에서 새로고침하여 확인

 

4. image를 다운받아서 사용

- 기존 image를 삭제

docker rmi --force dockingmosei/laravel8:latest

- 다시 받아서 잘 되는지 테스트

# 이미지 다운로드
$ docker pull dockingmosei/laravel8:latest

# 컨테이너 생성 후 접속
$ docker run -it -d -p 80:80 --privileged --name new_container dockingmosei/laravel8:latest /sbin/init
$ docker exec -it new_container bash

이렇게만 하면 기존에 세팅해놨던 웹서버들이 자동으로 구동되면서 

localhost 로 잘 붙는다.

 

이미지를 업데이트 하고싶다면?

다시 컨테이너를 commit 해서 동일한 tag로 push 하면 최신이미지로 덮어써진다.

$ docker commit container dockingmosei/laravel8:latest

이렇게 기존 이미지에 덮어쓰게되면 기존에 latest tag가 붙어있던 이미지는 <none> 으로 변경되고 새로 생성된 이미지에 latest tag가 붙는다.

이상태에서 동일하게 push 하면 됨

docker push dockingmosei/laravel8:latest

The push refers to repository [docker.io/dockingmosei/laravel8]
51c1a64d7308: Pushing [============>                                      ]  9.774MB/40.5MB
5d8dc70e5d89: Layer already exists
3208a8c846fe: Layer already exists
28889a4d5e89: Layer already exists
4942a1abcbfa: Layer already exists

위 처럼 업데이트 된 부분만 추가로 올라가는것을 볼 수 있다.

반응형