2016-04-01 42 views
1

我想分发一些可抛弃的码头图像(图像只启动一次,直接删除)。为了实现这一点,我必须能够将我的码头图像推送到其他主机可以从中拖出的码头注册表。其他码头服务器将此图片拉出来,运行并在终止后将其移除。动态码头注册表

不幸的是(afaik)没有简单的方法从私有码头注册表中删除图像。

是否有一种简单的方法来启动一次性码头注册表,我可以用它来分发?有没有办法接受任何不安全的注册表?

到目前为止,我总是通过配置不安全注册表:--insecure-registry

是否有可能不使用泊坞窗注册表分发泊坞窗图像的替代方案?

回答

1

当然,您可以通过几种方式来分发图像。我应该提到的最重要的事情可能是建立一个注册表(特别是由发行团队支持的最新版本的“v2注册表”)is kind of a pain。这并不难,而且比第一版注册表(旧的python项目)要早几年,但这并不是你想要解决这个问题的方法,尤其是在你寻找一个快速而简单的解决方案的时候。

因此,您将剩下的图像或容器分发为tarball档案。你可以在这里使用两组命令,并且有一些小的(但是重要的)区别。首先,让我们看看只传输图像,而不是容器。因此,您将在Docker主机上使用docker save,然后将tarball传输到目标机器,然后使用docker load从tarball创建映像。例如,在主机上:

docker save --output myImage.tar myImage:latest 

然后你就可以rsyncsftp(或其他)的myImage.tar压缩包传送到目标机器。然后在那个主机上:

docker load --input myImage.tar 

这很简单,但假设你有一个容器从你想要传输的映像运行。问题是你可以传输图像,但是它会在启动后丢失对图像文件系统所做的所有更改。解决方法是使用docker exportdocker 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