1. 找到要导出的容器 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 作为示例。
2. 使用 docker commit + docker save + docker load 命令导出容器和导入镜像
2.1 提交变更,并且把容器保存成镜像,命名为 mynewimage。
$ docker commit 3a09b2588478 mynewimage
$ docker images
2.2 把镜像保存为 tar 文件
$ docker save mynewimage > /tmp/mynewimage.tar
把 mynewimage.tar 拷贝到新的 Docker 实例中,比如 FTP、SCP 或者直接使用 NFS 共享。
2.3 从 tar 文件导入为镜像
$ docker load < /tmp/mynewimage.tar
2.4 检查镜像是否导入成功
$ docker images
3. 使用 docker export + docker import 命令导出容器和导入镜像
3.1 导出容器快照为 tar 文件
$ docker export 3a09b2588478 > mynewimage.tar
3.2 导入容器快照为镜像
$ cat mynewimage.tar | docker import test/mynewimage:v1.0
此外,也可以通过指定 URL 或者某个目录来导入,例如
$ docker import http://example.com/exampleimage.tgz example/imagerepo
$ tar -c .| docker import exampleimagedir
小结:既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。
两者区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。
此外,从容器快照文件导入时,可以重新指定标签等元数据信息。
$ 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 作为示例。
2. 使用 docker commit + docker save + docker load 命令导出容器和导入镜像
2.1 提交变更,并且把容器保存成镜像,命名为 mynewimage。
$ docker commit 3a09b2588478 mynewimage
$ docker images
2.2 把镜像保存为 tar 文件
$ docker save mynewimage > /tmp/mynewimage.tar
把 mynewimage.tar 拷贝到新的 Docker 实例中,比如 FTP、SCP 或者直接使用 NFS 共享。
2.3 从 tar 文件导入为镜像
$ docker load < /tmp/mynewimage.tar
2.4 检查镜像是否导入成功
$ docker images
3. 使用 docker export + docker import 命令导出容器和导入镜像
3.1 导出容器快照为 tar 文件
$ docker export 3a09b2588478 > mynewimage.tar
3.2 导入容器快照为镜像
$ cat mynewimage.tar | docker import test/mynewimage:v1.0
此外,也可以通过指定 URL 或者某个目录来导入,例如
$ docker import http://example.com/exampleimage.tgz example/imagerepo
$ tar -c .| docker import exampleimagedir
小结:既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。
两者区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。
此外,从容器快照文件导入时,可以重新指定标签等元数据信息。
没有评论:
发表评论