Connecting

불좀 꺼줄래? 내 Docker좀 보게 PART 6 - 도커 이미지 저장 및 복원하기 본문

Container

불좀 꺼줄래? 내 Docker좀 보게 PART 6 - 도커 이미지 저장 및 복원하기

팬도라 2020. 11. 15. 12:18
반응형

Docker backup & restore

Docker를 사용하다 보면 해당 이미지 혹은 컨테이너를 직접 백업하고 복구하는 상황이 생길 수 있다. 이때는 다음과 같은 명령을 통해서 시도할 수 있다.

docker export

컨테이너를 백업하는 명령이다.

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
f70cd32010d3        hello-dockerfile    "cat /hello-docker.t…"   29 minutes ago      Exited (0) 29 minutes ago                       

$ docker export f70cd32010d3 > ./hello-dockerfile.tar # 컨테이너 ID 혹은 이름으로 지정

docker import

출력된 컨테이너를 복구하는 명령이다. 반드시 export된 컨테이너만 사용할 수 있다.

$ docker import hello-dockerfile.tar dockerfile
sha256:81997a2091ba3eeebf40e744c7f0eb2113219b3e0e7f0b6d35e3494125b24d76

$ ocker images
REPOSITORY               TAG                 IMAGE ID            CREATED              SIZE
dockerfile               latest              81997a2091ba        About a minute ago   98.8MB

docker save

Docker 이미지를 백업하는 명령어이다.

$ docker save -o hello-dockerfile.tar jusk2/hello-dockerfile

$ ls -l 
-rw-------   1 seongwon  staff  104734720 10 15 17:45 hello-dockerfile-image.tar

docker load

추출된 이미지를 로드하는 명령이다. 반드시 save된 이미지만 사용할 수 있다.

$ docker load -i hello-dockerfile-image.tar
Loaded image: jusk2/hello-dockerfile:latest
Loaded image: jusk2/hello-dockerfile:v1.0

동일한 명령어 같이 보이지만 자세히 보면 차이가 분명히 존재하는 다른 명령어이다. export의 경우 컨테이너를 동작하기 위한 모든 파일이 압축되기 때문에 tar 파일에는 루트 시스템 전체가 담겨있다. 하지만 save의 경우 이미지 레이어 구조까지 포함된 형태로 압축되기 때문에 출력된 파일이 tar로 동일하더라도, 압축되어 있는 파일 구조 및 디렉터리 형식이 다르기 때문에 export -> import, save -> load를 사용해서 이미지화시켜야 한다.

Comments