Docker镜像 导入导出 迁移

  • 内容
  • 评论
  • 相关

Docker 背后的驱动力之一就是通过所有的 Docker 使服务器 能创建一个一致的环境,并且能创建一个能运行在任何 Docker 服务器上的合适的模板或是镜像。

因此,Docker 能非常完美的支持,能非常容易的导出一个正在运行的容器,并且重新导入另外一台 Docker 服务器。

让我们假设一下,例如这个示例,你有一个你将移动到另外一台服务器去的正在运行的容器。这个进程的功能就是把这个容器保存为一个镜像,保存成 一个 tar 文件,把它移动到新的服务器,并且把这个镜像加载进新的 docker 服务器。

找到你想移动的 Docker 容器的 ID。

 docker ps -a

image 

[root@iZ62u41bnmzZ var]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                                            NAMES
65e3313ba27d        gogs/gogs:0.9.0     "docker/start.sh /bi   4 months ago        Up 3 weeks          0.0.0.0:10022->22/tcp, 0.0.0.0:10080->3000/tcp   gogs  

 

我将使用 65e3313ba27d这个 ID 作为示例演示。

提交你的变更,并且把容器保存成镜像,命名为 mygogs

$ docker commit 65e3313ba27d mygogs
5097472c4464245c87e5931ba70c8452e6954fc4331f0855e4bb53148819e25e
image 

mygogs 镜像保存成 tar 文件,我将使用 /tmp 目录保存这个镜像,但是你可以使用 NFS 来共享,使得非常容易的移动完成 tar 文件。

$ docker save mygogs> /data/mygogs.tar

把 mygogs.tar 拷贝到新的 Docker 实例中,使用任何工作在你环境中的方法,比如 FTP、SCP 等等。

在你的新的 Docker 实例中运行 docker load命令,并且指定 tar 镜像文件的位置。

$ docker load < /data/mygogs.tar

最后,运行 docker images 命令检查镜像现在是否可用。

$ docker images

image