有时候我们需要在一台服务器上部署一个新容器,而这个容器全部重新配置环境特别费时间,正好别的服务器上有配置好环境的同类容器,我们可以偷懒,可以通过copy的方式降低工作量。
本文适用场景之一:青龙容器迁移
- 先通过命令
docker stop container_name
暂停要迁移的容器运行,接着进行如下步骤:
- 通过命令
docker commit 容器名称/容器ID 镜像名:标签号
来将当前容器打包成docker镜像(其中镜像名和标签号是我们可以根据自己想法自定义取名); - 如果当前容器有映射目录到宿主机,那么后面还需要将映射目录打包迁移,如果忘记容器是否有映射目录到宿主机,可以通过命令
docker inspect mark|grep Mounts -A 20
来查看; - 通过命令
docker save -o xxx.tar 镜像名:标签号
将前面生成的容器镜像打包存储为tar压缩包,示例命令:docker save -o ql1.0.tar ql:1.0
,其中的ql1.0.tar
是压缩包名称,ql:1.0
是镜像名:标签号; - 如果要迁移的容器有映射目录到宿主机,我们将该容器在保存为新镜像时,里面的数据全部会被抛弃,不会保存在新镜像中,所以我们还需要备份映射目录的所有数据;
- 通过命令
tar czvf my.tar 目录路径
来打包映射目录,比如你将容器某目录映射到宿主机的/root/myfile,则对应的打包命令为tar czvf my.tar /root/myfile
; - 将上面的tar压缩包通过sftp或者其他方法传输到新的服务器上,在新服务器上对备份的目录压缩包通过
tar xzvf -C 期望解压缩到的目录路径 my.tar
来解压,如tar xzvf -C /root/myfile my.tar
; - 使用
docker load --input
命令导入容器镜像,如docker load --input ql1.0.tar
, - 通过
docker run -id --name=容器B -p 8081:8080 -v /usr/local/baseproject:/usr/local/tomcat/webapps --privileged=true 新镜像名:标签号
来创建容器,前面命令中的/usr/local/baseproject
和/usr/local/tomcat/webapps
分别是宿主机的映射目录
和对应的容器中的目录路径
。 - 至此,容器迁移全部完成。
评论 (0)