Docker를 운영하다 보면 이미지를 다른 서버로 전달하거나 인터넷이 연결되지 않은 환경에서 동일한 이미지를 사용해야 하는 경우가 자주 발생합니다. 또한 Docker Hub에서 다시 다운로드할 수 없는 자체 제작 이미지라면 반드시 백업이 필요합니다.
이때 사용하는 명령어가 바로 docker save와 docker load입니다.
많은 사람들이 docker export와 docker save를 같은 기능이라고 생각하지만 실제로는 완전히 다른 역할을 수행합니다. Docker Export는 컨테이너의 파일 시스템을 백업하는 명령어이고, Docker Save는 Docker 이미지를 그대로 백업하는 명령어입니다.
이번 글에서는 Docker Save와 Docker Load의 개념부터 사용법, Export와의 차이점, 실무 활용 사례, 운영 시 주의사항까지 자세히 알아보겠습니다.
Docker Save란 무엇인가?
Docker Save는 하나 이상의 Docker 이미지를 tar 파일 형태로 저장하는 명령어입니다.
이미지 자체를 그대로 저장하기 때문에 이미지의 모든 레이어(Layer), 태그(Tag), 메타데이터가 함께 보존됩니다.
즉, 다른 서버에서 Docker Hub 없이도 동일한 이미지를 그대로 사용할 수 있습니다.
인터넷이 연결되지 않은 환경이나 폐쇄망 서버에서 Docker 이미지를 배포할 때 가장 많이 사용하는 명령어입니다.
Docker Load란 무엇인가?
Docker Load는 Docker Save로 생성한 tar 파일을 Docker 이미지로 복원하는 명령어입니다.
복원된 이미지는 기존 이미지와 동일한 Repository, Tag, Layer 정보를 그대로 유지합니다.
따라서 다른 서버에서도 원본 이미지와 동일하게 컨테이너를 생성하여 사용할 수 있습니다.
Docker Save 기본 사용법
Docker Save의 기본 형식은 다음과 같습니다.
docker save -o backup.tar 이미지명
예를 들어 nginx 이미지를 백업하려면 다음과 같이 실행합니다.
docker save -o nginx.tar nginx:latest
명령이 완료되면 nginx.tar 파일이 생성됩니다.
이 파일에는 nginx 이미지의 모든 레이어와 메타데이터가 함께 저장됩니다.
여러 이미지를 동시에 저장하는 것도 가능합니다.
docker save -o images.tar nginx:latest ubuntu:22.04 redis:latest
하나의 tar 파일에 여러 Docker 이미지를 함께 백업할 수 있습니다.
Docker Load 기본 사용법
백업한 이미지는 Docker Load 명령으로 복원할 수 있습니다.
docker load -i nginx.tar
복원이 완료되면 Docker Images 목록에서 확인할 수 있습니다.
docker images
출력 결과입니다.
REPOSITORY TAG
nginx latest
복원된 이미지는 원본 이미지와 동일하게 사용할 수 있습니다.
docker run -d -p 80:80 nginx:latest
Docker Save와 Docker Export의 차이
Docker Save와 Docker Export는 목적이 완전히 다릅니다.
Docker Save는 이미지 자체를 백업하는 기능입니다.
반면 Docker Export는 실행 중인 컨테이너의 파일 시스템만 백업합니다.
Docker Save는 이미지의 Layer, Tag, History, 메타데이터를 모두 유지하지만 Docker Export는 이러한 정보가 모두 제거됩니다.
따라서 다른 서버에서도 동일한 Docker 이미지를 그대로 사용하려면 반드시 Docker Save를 사용해야 합니다.
Docker Export는 컨테이너 상태를 임시 보관하거나 파일 시스템을 분석할 때 사용하는 것이 적합합니다.
Docker Save 실무 활용 예제
Docker Save는 운영 환경에서 이미지를 안전하게 보관하거나 다른 서버로 이전할 때 가장 많이 사용되는 명령어입니다. 특히 자체 제작한 이미지는 Docker Hub에 존재하지 않는 경우가 많기 때문에 정기적으로 Save를 수행하는 것이 좋습니다.
인터넷이 없는 서버로 이미지 배포
폐쇄망 환경에서는 Docker Hub에 접속할 수 없습니다.
이 경우 인터넷이 연결된 서버에서 이미지를 백업합니다.
docker save -o nginx.tar nginx:latest
생성된 tar 파일을 USB나 내부 파일 서버를 이용해 폐쇄망 서버로 복사합니다.
이후 대상 서버에서 이미지를 복원합니다.
docker load -i nginx.tar
Docker Hub 없이도 동일한 이미지를 사용할 수 있습니다.
자체 제작 이미지 백업
회사에서 직접 개발한 이미지는 Docker Hub에서 다시 받을 수 없습니다.
따라서 이미지를 생성한 후 반드시 Save를 수행하는 것이 좋습니다.
docker save -o company-api-v1.tar company-api:v1
백업 파일을 NAS나 백업 서버에 저장하면 장애가 발생하더라도 빠르게 복원할 수 있습니다.
여러 이미지를 한 번에 백업
서비스를 구성하는 이미지가 여러 개라면 동시에 저장할 수도 있습니다.
docker save -o project.tar nginx redis mysql ubuntu
프로젝트 전체 이미지를 하나의 파일로 관리할 수 있어 배포가 더욱 편리합니다.
Docker Hub 장애 대비
Docker Hub 장애나 네트워크 문제로 이미지를 다운로드하지 못하는 상황도 발생할 수 있습니다.
자주 사용하는 이미지를 미리 Save해 두면 이러한 상황에서도 즉시 서비스를 복구할 수 있습니다.
Linux 서버 문제 해결
운영 서버 장애로 인해 새로운 서버를 긴급하게 구축해야 하는 상황이 발생했습니다.
하지만 회사 보안 정책 때문에 외부 인터넷 연결이 차단되어 Docker Hub에서 이미지를 내려받을 수 없었습니다.
다행히 기존 운영 서버에서 미리 이미지를 백업해 두었습니다.
docker save -o production.tar production:v3
새 서버에서 다음 명령을 실행했습니다.
docker load -i production.tar
몇 분 만에 동일한 이미지를 복원했고 기존 Docker Compose 파일을 이용해 서비스를 정상적으로 실행할 수 있었습니다.
만약 Docker Save 백업이 없었다면 인터넷 연결을 허용하거나 이미지를 다시 빌드해야 했기 때문에 복구 시간이 훨씬 길어졌을 것입니다.
Docker Save 사용 시 주의사항
Docker Save를 사용할 때 반드시 알아야 할 사항이 있습니다.
첫 번째는 이미지 크기가 매우 클 수 있다는 점입니다.
여러 레이어를 포함하기 때문에 tar 파일의 용량이 수 GB 이상이 되는 경우도 흔합니다.
두 번째는 실행 중인 컨테이너의 데이터는 저장되지 않습니다.
Docker Save는 이미지를 백업하는 기능이므로 데이터베이스나 로그 파일처럼 컨테이너 실행 후 생성된 데이터는 포함되지 않습니다.
세 번째는 Docker Volume 역시 백업 대상이 아닙니다.
Volume 데이터는 별도의 백업 전략을 수립해야 합니다.
Best Practice
Docker Save를 사용할 때는 다음과 같은 방법을 추천합니다.
- 자체 제작 이미지는 버전별로 Save하여 보관합니다.
- 운영 서버 배포 전 반드시 백업 파일을 생성합니다.
- 백업 파일 이름에 버전과 날짜를 함께 기록합니다.
- NAS 또는 별도의 백업 서버에 이중 보관합니다.
- 이미지 백업과 Volume 백업을 함께 수행합니다.
- Load 후에는 반드시 정상적으로 컨테이너가 실행되는지 테스트합니다.
이러한 습관을 들이면 서버 장애가 발생하더라도 매우 빠르게 서비스를 복구할 수 있습니다.
자주 묻는 질문
Docker Save는 실행 중인 컨테이너를 저장하나요?
아닙니다. Docker Save는 이미지를 저장하는 명령어이며 실행 중인 컨테이너의 변경 사항은 포함되지 않습니다.
Docker Save와 Docker Export 중 무엇을 사용해야 하나요?
이미지를 그대로 보관하거나 다른 서버로 전달하려면 Docker Save를 사용합니다.
현재 컨테이너의 파일 시스템만 저장하려면 Docker Export를 사용합니다.
Docker Load 후에도 이미지 태그가 유지되나요?
네. Docker Save로 저장한 Repository와 Tag 정보가 그대로 복원됩니다.
여러 이미지를 동시에 백업할 수 있나요?
가능합니다. 여러 이미지 이름을 한 번에 입력하면 하나의 tar 파일로 저장됩니다.
마무리
Docker Save와 Docker Load는 Docker 이미지를 안전하게 백업하고 복원하는 가장 기본적인 명령어입니다.
이미지의 레이어와 메타데이터까지 그대로 보존하기 때문에 서버 이전, 폐쇄망 배포, 장애 복구, 장기 백업 등 다양한 운영 환경에서 필수적으로 사용됩니다.
반면 Docker Export는 컨테이너의 파일 시스템만 저장하는 기능이므로 두 명령어의 목적을 정확하게 구분하는 것이 중요합니다.
실무에서는 Docker Save를 정기적인 이미지 백업 전략에 포함하고 Docker Volume 백업과 함께 관리하면 안정적인 운영 환경을 구축할 수 있습니다.