前言

有两种方法迁移
第一种
将容器快照成新的镜像 ,然后将镜像打包导出,scp到新的设备上,在新的容器中运行打包的镜像即可。
第二种:
将容器快照成镜像 ,推送到云仓库(Docker Hub、Harbor),在新的设备上进行拉取即可


要注意的是:容器打包成镜像,如果容器是映射的有挂在卷,数据不会同步。例如mysql,我们需要进容器中创建一个数据目录,将映射的数据拷贝到容器中,在做快照即可。另外记得记录原容器开启的端口。

第一种迁移例子:

  1. 查看所有容器
[root@master ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED      STATUS        PORTS                NAMES
1264f054d215   nginx     "/docker-entrypoint.…"   9 days ago   Up 19 hours   0.0.0.0:80->80/tcp   nginx-web

  1. 将容器快照成镜像
docker commit -p  【容器名或ID】 【新镜像名:标签】


[root@master ~]# docker commit -p 1264f054d215 nginx-test:v8.8
sha256:5a29a816167dd6a5e847d3891313bb22b2ddee8f658e4546af98c1ea26660b29
[root@master ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx-test   v8.8      5a29a816167d   6 seconds ago   184MB
nginx        latest    6084105296a9   13 days ago     133MB

参数说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

  1. 将镜像打包
docker save -o 【备份名.tar】  【备份的镜像名或ID】


[root@master ~]# docker save -o ngxin-test-back.tar  nginx-test 
[root@master ~]# ll -h
-rw------- 1 root root 182M 3月  26 16:28 nginx-test-back.tar

  1. 将包导入新容器,成为镜像
docker load -i 【备份包名.tar】

[root@master ~]# docker load -i nginx-test-back.tar  
14a1ca976738: Loading layer [==================================================>]  72.49MB/72.49MB
2230366c7c6c: Loading layer [==================================================>]  64.81MB/64.81MB
fc621d08b12b: Loading layer [==================================================>]  3.072kB/3.072kB
7278048f2330: Loading layer [==================================================>]  4.096kB/4.096kB
2f2780a1a18d: Loading layer [==================================================>]  3.584kB/3.584kB
6b93c0e56d01: Loading layer [==================================================>]  7.168kB/7.168kB
03ec3d42b210: Loading layer [==================================================>]  52.53MB/52.53MB
Loaded image: nginx-test:v8.8
[root@master ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx-test   v8.8      5a29a816167d   8 minutes ago   184MB

  1. 运行容器即可
[root@master ~]# docker run -it -p 80:80 nginx-test:v8.8

第二种迁移例子:

我们采用 Docker Hub作为镜像存储

  1. 首先需要注册,并创建 一个私人仓库
    官网地址: https://hub.docker.com/

注册完毕登陆,然后创建私人仓库

在这里插入图片描述

在这里插入图片描述

  1. 登陆刚刚创建好的仓库

在这里插入图片描述

  1. 把打包好的镜像打个标签,并推送
docker tag 【要打包的镜像名字:版本】 dockerhub的用户名/创建的仓库名:版本

[root@master ~]# docker  tag nginx-test:v8.8 707767695/new:v8.8

[root@master ~]# docker images   
REPOSITORY      TAG       IMAGE ID       CREATED       SIZE
nginx-test      v8.8      5a29a816167d   2 hours ago   184MB
707767695/new   v8.8      5a29a816167d   2 hours ago   184MB

[root@master ~]# docker push 707767695/new:v8.8  


  1. 进入创建的仓库,查看推送成功

在这里插入图片描述

  1. 在新设备上拉去并运行
[root@racknerd-dfc76f ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username : 707767**
Password: 
Login Succeeded



[root@racknerd-dfc76f ~]# docker pull 7077676**/new:v8.8

[root@racknerd-dfc76f ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
docker.io/7077676**/new   v8.8                5a29a816167d        2 hours ago         184 MB

docker run -itd -p 80:80 docker.io/7077676**/new:v8.8
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐