当然,您可以通过几种方式来分发图像。我应该提到的最重要的事情可能是建立一个注册表(特别是由发行团队支持的最新版本的“v2注册表”)is kind of a pain。这并不难,而且比第一版注册表(旧的python项目)要早几年,但这并不是你想要解决这个问题的方法,尤其是在你寻找一个快速而简单的解决方案的时候。
因此,您将剩下的图像或容器分发为tarball档案。你可以在这里使用两组命令,并且有一些小的(但是重要的)区别。首先,让我们看看只传输图像,而不是容器。因此,您将在Docker主机上使用docker save
,然后将tarball传输到目标机器,然后使用docker load
从tarball创建映像。例如,在主机上:
docker save --output myImage.tar myImage:latest
然后你就可以rsync
或sftp
(或其他)的myImage.tar
压缩包传送到目标机器。然后在那个主机上:
docker load --input myImage.tar
这很简单,但假设你有一个容器从你想要传输的映像运行。问题是你可以传输图像,但是它会在启动后丢失对图像文件系统所做的所有更改。解决方法是使用docker export
和docker import
。这会将所有中间更改与基本文件系统映像一起保存到文件系统中。
因此,您将在您的docker主机上使用docker export
命令,当然还要在目标机器上使用docker import
。和另一个例子一样,您需要将docker export
生成的压缩包传输到目标机器。例如,搬运工主机上:
docker export myContainer > myContainer.tar
然后在目标机器上,你已经转移myContainer.tar
后它:
cat myContainer.tar | docker import - jotschi/myContainerImage
现在你已经有了目标的图像称为jotschi/myContainerImage
,然后您可以创建一个容器:
docker run -d --name=myContainer -p 80:80 jotschi/myContainerImage