我有一些正在运行的Docker容器,例如:
- Nginx
- Web应用程序1
- Web应用程序2
- PostgreSQL
由于Nginx需要连接到Web应用程序1和2中的Web应用程序服务器,并且Web应用程序需要与PostgreSQL通信,因此我设置了如下链接:
- Nginx---link--->Web应用程序1
- Nginx---link--->Web应用程序2
- Web应用程序1---link--->PostgreSQL
- Web应用程序2---link--->PostgreSQL
起初这个方案效果不错。但是,当我开发Web应用程序1和2的新版本时,我需要替换它们。我所做的是删除Web应用程序容器,设置新容器并启动它们。
对于Web应用程序容器,它们的IP地址最初可能是这样的:
- 172.17.0.2
- 172.17.0.3
在我替换它们后,它们将具有新的IP地址:
- 172.17.0.5
- 172.17.0.6
现在,Nginx容器中公开的环境变量仍然指向旧的IP地址。这就出现了问题。如何替换容器而不破坏容器之间的链接?同样的问题也会发生在PostgreSQL中。如果我想升级PostgreSQL镜像版本,我肯定需要删除它并运行新的镜像,但是这样做需要重新构建整个容器图,因此对于实际的服务器操作来说,这不是理想的方案。