原文网址:Docker系列--镜像和容器备份与恢复的方法_IT利刃出鞘的博客-CSDN博客
简介
说明
本文介绍备份和恢复Docker镜像与容器的方法。
命令对比
保存与导出
- docker save:保存的是镜像(image)。(保存的是分层的文件系统,比export的文件大)
- docker export:保存的是容器(container)。(保存的只是Linux系统的文件目录)
载入与导入(两者都会恢复为镜像)
- docker load:载入镜像包(不能对载入的镜像重命名)
- docker import:载入容器包(可以为镜像指定新名称)
镜像备份与恢复(save+load)
导出镜像
命令
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
容器备份与恢复(export+import)
导出容器
命令
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特殊的应用场合:被入侵后保存现场等。
生成镜像
命令
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)”