在節點之間導出和導入 DOCKER 鏡像

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

提交你的變動,而且把容器保存成鏡像,命名爲 mynewimagecode

$ 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
相關文章
相關標籤/搜索