导入和到处Docker容器(跨主机迁移)
Docker容器的分发通常通过Docker Hub,也就是中心化的镜像上传和下载,适合数据中心管理方式。但是对于个人开发者,简简单单在两台主机间复制镜像则更为常见,此时使用Docker的export和import功能。
容器迁移
以下案例将主机A上的容器
myapp-server
迁移到主机B
在原主机A上检查容器
显示容器
输出容器
这里
myapp-server
是运行的容器名字
将镜像复制到主机B,然后执行以下命令导入
此时在主机B上检查镜像docker images
可以看到
在主机B上运行容器只需要以下命令
存储卷迁移
原先在主机A上,容器
myapp-server
有一个存储卷share-data
,是多个Docker容器共享的存储卷,需要从主机A迁移到主机B以便完整实现数据同步:
以下是在主机A上检查显示
注意:这个share-data
卷在容器中映射目录是data
:
显示卷如下
How to port data-only volumes from one host to another?介绍了Docker官方文档Backup, restore, or migrate data volumes的解决方法:
--volumes-from
参数可以创建新的容器来挂载卷。
在主机A上备份卷:
参数解释
--rm
当退出时移除容器
--volumes-from myapp-server
将容器myapp-server
的卷连接到本次命令启动的新容器上(用于读取数据)。这个卷的设置会和原先myapp-server
完全相同,也是share-data
卷映射到容器内的/data
目录
-v $(pwd):/backup
将主机A的当前目录映射成容器内的/backup
目录,这样在容器中执行的命令tar cvfz /backup/backup.tar.gz /data
就会把文件backup.tar.gz
实际存储到主机A的当前目录下
busybox
是一个非常小巧简单的镜像
tar cvfz /backup/backup.tar.gz /data
创建一个容器中目录/data
的备份 (注意:这里使用了tar cvfz
命令,其中-v
参数是详细的输出信息,如果不需要屏幕输出备份了那些文件,可以去除-v
参数)
将主机A的备份文件
data.tar.gz
复制到主机B上在主机B上创建新的容器
DATA2
,并且卷share-data
附加到这个用于回复数据的临时容器中 - 请参考Docker卷原先的操作步骤
上述步骤完成后,实际上DATA2
这个容器就是我们用来转移回复的桥梁容器了。
在主机B上启动
DATA2
容器并执行命令恢复数据
在主机B上正式创建容器
myapp-server
并挂载共享的存储卷
此时在主机B上就可以看到进入了容器myapp-server
,对比检查系统内容可以看到完全和原先在主机A上相同。
参考
Last updated