Docker에서 이미지나 컨테이너를 파일으로 export하거나, import하는 방법에 대해 알아보고자한다. Docker에서는 컨테이너를 저장하는 export 커맨드와 이미지를 저장하는 save 커맨드 두 가지가 있다. 그리고 save와 export는 각각 이미지와 컨테이너를 압축파일(.tar확장자)로 저장한다.
이미지
이미지를 파일로 저장하는 save
docker save [옵션] 이미지명
Docker 이미지를 포함된 태그 정보 등을 포함한 이미지를 저장한다. sample-image이라는 이미지를 저장하는 경우는 아래와 같이 사용한다.
docker save sample-image > sample-image.tar
컨테이너에서의 변경을 이미지에 반영할 경우에는 commit한 후에 저장한다.
저장한 이미지를 읽어들이는 load
save 커맨드로 저장한 이미는 load 커맨드로 Docker에 읽어들인다. 커맨드는 다음과 같다.
docker load < sample-image.tar
컨테이너
컨테이너를 파일로 저장하는 export
docker export [옵션] 컨테이너명|컨테이너ID
Docker의 컨테이너를 저장한다. Docker의 메타 정보등은 무시되며, 파일 시스템의 복사본이 그대로 저장된다.
docker export sample-container > sample-container.tar
저장한 컨테이너를 읽어들이는 import
docker import 파일 - [리포지터리[:태그]]
export한 컨테이너는 import 커맨드를 사용하여 Docker 이미지로 읽어들일 수 있다. 옵션으로 리포지터리명과 태그를 지정할 수 있다.
example-container.tar를 new-image이라는 리포지터리명으로 latest 태그를 붙여 읽어들이고 싶은 경우 다음과 같이 쓸 수 있다.
cat example-container.tar | docker import - new-image:latest
save와 export 어떠한 것을 사용해야하나?
앞서 얘기했듯, save는 이미지를 export는 컨테이너를 저장한다는 차이점이있다. 그 외에 두 가지의 큰 차이점은 메타 정보도 함께 저장되는지 아닌지에 따라 다르다는 점이다.
Docker 이미지는 파일의 다른 정도가 레이어로 중첩되어 있는 구조가 되어 있어, save는 레이어의 정보 등도 포함된 상태로 저장된다. 한편 export는 Docker로써의 구조나 메타 정보가 저장되지 않고, 파일 시스템만 저장된다. 그러므로 파일사이즈는 save보다 export쪽이 적다.
참고자료
'IT > 기초 지식' 카테고리의 다른 글
[Docker] docker-compose 커맨드 정리 (0) | 2022.02.02 |
---|---|
[python] pip 과 requirements.txt를 이용해서 패키지 혹은 라이브러리 일괄 다운로드하기 (2) | 2022.02.01 |
[Docker] Docker에서 사용하지 않는 오브젝트를 삭제하는 "prune" 커맨드와 옵션 (0) | 2022.01.28 |
[Docker] Windows10 환경에서 WSL2+Docker사용하기 (0) | 2022.01.28 |
[git] git의 여러가지 취소 방법 (0) | 2021.12.19 |