如何在一个文件中打包docker镜像

Eug*_*erg 8 docker

我有一个名为"ubuntu-dev-update-15"的5GB docker镜像,我是在我当地的Ubuntu 14 dev机器上开发的.在那张图片中,我拥有完成开发工作所需的一切.现在我需要能够将此图像发送到不同的Linux主机.这样做的程序是什么?

Tej*_*sad 17

如果您的不同Linux主机位于同一网络上,则可以使用FTP或本地HTTP服务器传输已保存的映像,或者共享以在本地传输文件.使用保存:

docker save [OPTIONS] IMAGE [IMAGE...]
Run Code Online (Sandbox Code Playgroud)

示例: sudo docker save -o ubuntu.tar ubuntu:precise ubuntu:unicorn

其中,-o保存到一个文件,而不是标准输出.将此tar文件传输到其他linux主机.使用以下命令在新主机中载入此tar文件:docker load [OPTIONS]

例: sudo docker load --input fedora.tar

其中--input从tar存档文件中读取,而不是STDIN.

  • 这是迄今为止最好的答案。您不需要机器之间的网络连接,您甚至可以以任何您想要的方式存储文件。 (2认同)

小智 5

Docker 集线器是移动文件的一种选择。但是从生产的角度来看,最好在要发送图像的机器上运行一个注册表(存储图像的地方)。

例如,您想将图像从 system1 发送到 system2。让您的图像名称为 my_image。

现在通过运行在 system1 中打开一个注册表

docker run -p <system1-ip>:5000:5000 -d registry
Run Code Online (Sandbox Code Playgroud)

将您的图像推送到该注册表中:

您需要使用标签选项将图像重命名为 :5000/my_image

docker tag my_image <system1-ip>:5000/my_image
Run Code Online (Sandbox Code Playgroud)

现在使用 push 命令推送到注册表中

docker push <system1-ip>:5000/my_image
Run Code Online (Sandbox Code Playgroud)

现在转到 system2 并从注册表中拉取您的映像。

  docker pull <system1-ip>:5000/my_image
Run Code Online (Sandbox Code Playgroud)

这是最安全的图像传输方式。创建私有存储库的参考链接


Gre*_*reg 0

在 docker hub 上获得一个帐户。

https://hub.docker.com/account/signup/
Run Code Online (Sandbox Code Playgroud)

注册后(仅执行一次),您可以从具有要推送的图像的主机登录:

docker login
    (login with your username, password, and email address)
Run Code Online (Sandbox Code Playgroud)

然后你把你的图像推到那里。您可能需要先标记它。假设您创建了一个名为 mynewacc 的新帐户,首先,您标记您的图像:

docker tag ubuntu-dev-update-15 mynewacc/ubuntu-dev-update-15
Run Code Online (Sandbox Code Playgroud)

然后将图像推送到您的 docker hub:

docker push mynewacc/ubuntu-dev-update-15
Run Code Online (Sandbox Code Playgroud)

现在任何使用 docker 的人都可以拉取你的镜像:

docker pull mynewacc/ubuntu-dev-update-15
Run Code Online (Sandbox Code Playgroud)

然后运行图像:

docker run -it mynewacc/ubuntu-dev-update-15 /bin/bash
Run Code Online (Sandbox Code Playgroud)

您可以跳过拉取步骤,如果图像不存在,无论如何都会拉取它。拉力保证您得到最新鲜的。

  • 当然,这有效。但如果图像中包含商业数据或其他IP怎么办?这个答案只是鼓励人们做一些可能不安全的事情,甚至没有必要。另外两个答案是更好的选择,尤其是在商业环境中。 (6认同)