容器迁移
-
docker inspect <容器名/id> --format='{{json .Mounts}}'
-
查看容器挂载在宿主机上的目录及映射到容器内部的目录。
-
scp -r <本机目录> <目标机角色>@<目标机ip>:<目标机目录>
-r代表是个目录,会递归地发送目录里的内容
例如:scp -r /usr/local/docker/minio root@<ip地址>:/usr/local/docker
问题:输入密码后显示报错
Permission denied, please try again.
是因为目标主机为Ubuntu系统,不支持以root角色访问,按照腾讯云文档修改配置文件后解决。
-
docker export -o <地址前缀,不填为当前文件夹><自定义名字>.tar <容器名或id>
导出正在运行的容器为tar文件,发送到目标机。 -
目标机安装docker,参考这个地址如何在 Ubuntu 上安装 Docker | Linux 中国 - 知乎 (zhihu.com)。
下载速度慢或者下载失败可以尝试更换apt-get的镜像源。 -
目标机执行
docker import <自定义名字>.tar <自定义镜像名>:<自定义镜像tag>
可以不加tag,直接<自定义镜像名>即可。
这样做把导出的tar文件引入为目标机docker环境的images镜像。 -
目标机执行
docker run
指令,需要跟正常执行run
指令一样添加相关配置,包括容器的端口映射、账号、密码、是否自动启动、挂载目录等,这些配置因为安全考虑不会被export
导出。
关键:运行导出tar文件引入的镜像时,需要在
docker run
指令最后加command。command在原机使用docker ps -a --no-trunc
查看。
红圈部分为command,直接把双引号里内容加在
docker run
最后即可。不然会报错docker: Error response from daemon: no command specified
。
- 迁移完成,可以正常使用容器。