注:本文由 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