把容器从一台服务器迁移到另一台服务器,分以下五个步骤
- 容器打包成镜像 # docker commit -m "" -a "" [CONTAINER ID] [新的镜像名] ,其中-m和-a是可选参数,意思分别是描述和作者
- 导出镜像 # docker save -o [新的镜像名.tar] [新的镜像名]
- 拷贝镜像到目标服务器 # scp src dst
- 导入镜像 # sudo docker load -i [新的镜像名.tar]
- 运行容器 # docker run
以nginx-server容器为例,从服务器A迁移到服务器B,服务器A上访问如下
根据上述迁移步骤,执行命令如下
打包及导出镜像
[root@Server1 ~]# docker commit nginx-server nginx-server_0216
sha256:272b562a99186c7c72453743014dc28aa9051a5f547ca0b502bbb631480a9f1f
[root@Server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-server_0216 latest 272b562a9918 4 seconds ago 127MB
[root@Server1 ~]# docker save -o /tmp/nginx-server_0216.tar nginx-server_0216
[root@Server1 ~]# ls -lh /tmp/nginx-server_0216.tar
-rw------- 1 root root 125M Feb 16 16:06 /tmp/nginx-server_0216.tar
拷贝镜像到服务器B后,导入镜像及运行容器
[root@jly-php ~]# docker load -i /root/nginx-server_0216.tar
488dfecc21b1: Loading layer [==================================================>] 72.48MB/72.48MB
b4a29beac87c: Loading layer [==================================================>] 58.04MB/58.04MB
22439467ad99: Loading layer [==================================================>] 3.584kB/3.584kB
11a6fc6ceb9c: Loading layer [==================================================>] 12.8kB/12.8kB
Loaded image: nginx-server_0216:latest
[root@jly-php ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-server_0216 latest 272b562a9918 About an hour ago 127MB
[root@jly-php ~]# docker run --name nginx-server_0216 -d -p 8090:80 -v /data/nginx:/etc/nginx -v /data/www:/usr/share/nginx nginx-server_0216
容器运行起来后,把之前容器所在服务器A的持久化文件拷贝过来即可。