注:本文由 JAMES.COYLE 在 2014-6-16 编写,原文地址为 EXPORT AND IMPORT A DOCKER IMAGE BETWEEN NODESnode
Docker 背后的驱动力之一就是经过全部的 Docker 使服务器 能建立一个一致的环境,而且能建立一个能运行在任何 Docker 服务器上的合适的模板或是镜像。docker
所以,Docker 能很是完美的支持,能很是容易的导出一个正在运行的容器,而且从新导入另一台 Docker 服务器。ubuntu
让咱们假设一下,例如这个示例,你有一个你将移动到另一台服务器去的正在运行的容器。这个进程的功能就是把这个容器保存为一个镜像,保存成 一个 tar 文件,把它移动到新的服务器,而且把这个镜像加载进新的 docker 服务器。bash
找到你想移动的 Docker 容器的 ID。服务器
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f4b0d7285fec ubuntu:14.04 /bin/bash 38 minutes ago Exit 0 hungry_thompson 8ae64c0faa34 ubuntu:14.04 /bin/bash 41 minutes ago Exit 0 jovial_hawking 3a09b2588478 ubuntu:14.04 /bin/bash 45 minutes ago Exit 0 kickass_lovelace
我将使用 3a09b2588478
这个 ID 做为示例演示。.net
提交你的变动,而且把容器保存成镜像,命名为 mynewimage
。code
$ docker commit 3a09b2588478 mynewimage 4d2eab1c0b9a13c83abd72b38e5d4b4315de3c9967165f78a7b817ca99bf191e
把 mynewimage
镜像保存成 tar 文件,我将使用 /tmp
目录保存这个镜像,可是你能够使用 NFS
来共享,使得很是容易的移动完成 tar 文件。进程
$ docker save mynewimage > /tmp/mynewimage.tar
把 mynewimage.tar
拷贝到新的 Docker 实例中,使用任何工做在你环境中的方法,好比 FTP、SCP 等等。get
在你的新的 Docker 实例中运行 docker load
命令,而且指定 tar 镜像文件的位置。it
$ docker load < /tmp/mynewimage.tar
最后,运行 docker images
命令检查镜像如今是否可用。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mynewimage latest 4d2eab1c0b9a 5 minutes ago 278.1 MB ubuntu 14.04 ad892dd21d60 11 days ago 275.5 MB <none> <none> 6b0a59aa7c48 11 days ago 169.4 MB <none> <none> 6cfa4d1f33fb 7 weeks ago 0 B