Docker:如何处理重新启动的节点?

如果启用Docker的虚拟机重新启动(例如由于Azure修补虚拟机或出于任何原因),该节点可以获得新的IP地址(VirtualBox可能导致此问题,而Azure也会导致此问题,从而导致证书不再有效, Docker无法在该机器上启动。

如果我使用Docker Swarm,结果是重新启动的节点将无限期停留在Pending状态。

如果我然后做docker-machine regenerate-certs mymachine然后它再次开始工作。

我应该如何解释这个? 我想没有办法让节点重新启动,那么如何处理呢?

对于Azure,您可以使用“保留的IP”地址确保您的虚拟机在重新启动后保留其公有IP地址。 请注意,在Azure上使用保留的IP(与其他云提供商一样)可能会产生额外的费用。 https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-reserved-public-ip/

处理这个问题的另一种方法是使用发现。 Swarm提供了支持etcd,consul和zookeeper的发现机制。 在此处查找更多详细信息: https : //docs.docker.com/swarm/discovery/