2017-03-15 109 views
1

我计划我的注册表移动到另一台服务器,在这里我也想用一个新的证书,这是摆在/etc/docker/certs.d/myregistry/泊坞窗重装证书

我需要在所有服务器上部署证书,但我并不想重新启动docker守护程序,以“加载”新的证书文件。有没有办法重新加载证书文件,而无需重新启动所有容器?

命令“kill -HUP”会帮助我并重新加载证书文件吗? 当我只是替换证书文件时,它似乎没有按预期工作。

我使用泊坞版本1.10.3

如果没有办法,而不需要重新启动泊坞窗守护进程,这将是可能的泊坞窗版本13,重新启动搬运工守护时支持实时恢复,? - 意味着我可以重新启动守护程序,重新加载证书,而无需重新启动容器。

谢谢!

+0

[文档](https://docs.docker.com/engine/reference/commandline/dockerd/#configuration-reloading)对'dockerd'上的'SIGHUP'不幸列出了有关TLS证书的任何内容。 –

回答

0

由于没有在您的问题中提到,我猜docker registry目前在Nginx之后。如果是这样,你可以使用下面的命令刚刚重新加载Nginx

sudo service nginx reload

Nginx收到SIGHUP,它会重新加载(和验证)的配置,并阅读ssl certs,然后正常关闭工作进程引用旧的配置。新工人将自动使用新的配置。

+0

对不起,可能还不够清楚。我不是在谈论注册表本身的证书。这可以被替换而没有任何问题,因为容器的简单重启也能解决它。我正在谈论/etc/docker/certs.d/myregistry/中的主机服务器上的证书文件,该文件将由docker守护进程使用。我如何重新加载它们而不重新启动docker守护进程?因为这个文件在25台服务器上可用,并用于连接到注册表。 –

+0

@TD您是否在码头注册表中使用自签名证书?因此需要将root证书添加到docker守护进程本身?我会建议改变他们使用LetsEncrypt证书,并节省自己的头痛。我认为没有任何其他方式可以在不重新启动的情况下重新加载证书。 – Andy

+0

使用letsencrypt是不可能的,因为机器人试图从互联网连接到证书域。无法通过互联网访问正在创建的域,证书。因此,我们正在使用我们自己的根证书,该证书正被复制到所有Intranet服务器。 –