我正在尝试了解 Docker 及其周围的各种工具。对我来说,一个常见的问题是,如果我的 VM 重新启动,它们可能会有不同的 IP 地址。例如,VirtualBox 在本地运行时会这样做,Azure 在修补 VM 时也会这样做。
那么在 docker 环境中我该如何处理这个问题呢?例如,https://docs.docker.com/engine/userguide/networking/get-started-overlay/
$ docker-machine create \
-d virtualbox \
--swarm --swarm-master \
--swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" \
--engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500"\
--engine-opt="cluster-advertise=eth1:2376" \
mhs-demo0
在这种情况下,他们将服务发现指向一个固定的 IP,即 mh-keystore 机器的 IP。
如果我的虚拟机重新启动并且 IP 被刷新,则此设置将失败,因为它最终可能会指向完全不同的机器。
因此,对于不熟悉操作方面的开发人员来说,我最好的选择是什么?使用 DNS 名称?强制机器使用静态 IP?(不确定这是否在每个环境中都是一个选项)
当机器重新启动时,会出现一个相关问题,Docker 有时无法启动,并抱怨由于 IP 已更改,证书不同步。运行Docker-machine regenerate-certs ....
解决了这个问题。但我的印象是,docker 在刷新 IP 地址时总体表现不佳。任何关于这方面的指示也欢迎。