提问者:小点点

Docker-修复服务IP地址[重复]


我有一个docker-comment设置,有一堆后端服务(postgres,redis,...),一些应用程序(rails,节点,...)和一个nginx在上面。

应用程序使用docker env变量(例如docker ComposeDemo\u POSTGRES\u 1\u PORT\u 5432\u TCP\u ADDR)连接到数据库,nginx使用docker生成的/etc/hosts:(例如上游节点EAPP1上游{服务器docker ComposeDemo\u节点\u app1:3000;}连接到应用程序

问题是,每次我重启一些服务,它都会得到一个新的IP地址,因此它上面的所有东西都不能再连接到它,所以重启rails应用程序需要重启nginx,重启数据库需要重启应用程序和nginx.

我是做错了什么事,还是故意的行为?总是重启那些东西看起来不是一个好的解决方案。

非常感谢。


共1个答案

匿名用户

这是一种预期行为,有许多方法可以避免重新启动依赖服务,我将使用下一种方法:

我使用下一种方法运行与自己的静态ips相关的大多数dockerize服务:

  1. 我为docker主机上的所有服务创建ip别名
  2. 然后我运行每个服务,将端口从这个ip重定向到容器中,这样每个服务都有自己的静态ip,外部用户和其他容器可以使用它

样品:

docker run --name dns --restart=always -d -p 172.16.177.20:53:53/udp dns
docker run --name registry --restart=always -d -p 172.16.177.12:80:5000 registry
docker run --name cache --restart=always -d -p 172.16.177.13:80:3142 -v /data/cache:/var/cache/apt-cacher-ng cache
docker run --name mirror --restart=always -d -p 172.16.177.19:80:80 -v /data/mirror:/usr/share/nginx/html:ro mirror
...