原文网址:Docker系列--镜像和容器备份与恢复的方法_IT利刃出鞘的博客-CSDN博客
说明
本文介绍备份和恢复Docker镜像与容器的方法。
命令对比
保存与导出
载入与导入(两者都会恢复为镜像)
命令
- docker save 镜像ID或镜像名称[:版本号] > 镜像导出文件(格式为tar压缩文件)
- 或
- docker save -o 镜像导出文件(格式为tar压缩文件) 镜像ID或镜像名称[:版本号]
示例
- docker save newtomcat:v1.0 > mytomcat.tar
- 或
- docker save -o mytomcat.tar newtomcat:v1.0

命令
- docker load -i 镜像导出文件(格式为tar压缩文件)
- 或
- docker load < 镜像导出文件(格式为tar压缩文件)
示例
- docker load -i mytomcat.tar
- 或
- docker load < mytomcat.tar

命令
- docker export -o 容器导出文件(格式为tar压缩文件) 容器ID或容器名称
- 或
- docker export 容器ID或容器名称 > 容器导出文件(格式为tar压缩文件)
示例
- docker export -o newtomcat.tar mytomcat
- 或
- docker export mytomcat > newtomcat.tar

命令
- docker import 容器导出文件(格式为tar压缩文件) 新镜像名称[:版本号]
- 或
- docker import /URL 新镜像名称[:版本号]
示例
- docker import newtomcat.tar newtomcat:v1.0
- 或
- docker import http://example.com/exampleimage.tgz example/imagerepo

运行一个容器时(如果没使用卷),我们任何文件修改都会被记录到容器存储层里。docker commit 可以将容器的存储层保存下来成为镜像。即:原有镜像+容器的存储层=新的镜像,以后运行这个新镜像的时候,就会拥有原有容器最后的文件变化。
实际环境中并不会这样使用。原因有:
docker commit特殊的应用场合:被入侵后保存现场等。
命令
docker commit [容器名称|ID] 生成新的镜像名字
示例
- [root@localhost ~]# docker commit nginxweb nginx_test:v1
- sha256:a06b16b343036bcbf424c499022ca635bf90740aa7d76acbe0c271a731aba2ef
-
- [root@localhost ~]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- nginx_test v1 a06b16b34303 4 seconds ago 127MB
选项
- -a:提交的镜像作者
- -c:使用dockerfile指令来创建镜像
- -m:提交时的说明文字
- -p:在commit的时候,将正在运行的容器暂停
见前边:“镜像备份与恢复(save+load)”