Docker – 修复服务 IP 地址
Docker – fix service IP addresses
我有一个 docker-compose 设置,其中包含一堆后端服务(postgres、redis 等)、一些应用程序(rails、node 等)和一个nginx 在其之上。
应用程序使用 docker env 变量(例如 DOCKERCOMPOSEDEMO_POSTGRES_1_PORT_5432_TCP_ADDR
)连接到数据库,nginx 使用 docker 生成的 /etc/hosts
连接到应用程序: (例如 upstream nodeapp1-upstream { server dockercomposedemo_node_app1_1:3000; }
)
问题是每次我重新启动某些服务时,它都会获得一个新的 IP 地址,因此它上面的所有内容都无法再连接到它,因此重新启动 rails 应用程序需要重新启动nginx,重启数据库需要重启应用和nginx。
我是做错了什么,还是有意为之?总是重新启动所有这些东西看起来不是一个好的解决方案。
谢谢
这是一种预期的行为,有很多方法可以避免重新启动相关服务,我正在使用下一个 approach:
我 运行 我的大多数 docker 化服务使用下一种方法绑定到自己的静态 ip:
- 我为 docker 主机上的所有服务创建了 ip 别名
- 然后我 运行 每个服务将端口从这个 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
...
我有一个 docker-compose 设置,其中包含一堆后端服务(postgres、redis 等)、一些应用程序(rails、node 等)和一个nginx 在其之上。
应用程序使用 docker env 变量(例如 DOCKERCOMPOSEDEMO_POSTGRES_1_PORT_5432_TCP_ADDR
)连接到数据库,nginx 使用 docker 生成的 /etc/hosts
连接到应用程序: (例如 upstream nodeapp1-upstream { server dockercomposedemo_node_app1_1:3000; }
)
问题是每次我重新启动某些服务时,它都会获得一个新的 IP 地址,因此它上面的所有内容都无法再连接到它,因此重新启动 rails 应用程序需要重新启动nginx,重启数据库需要重启应用和nginx。
我是做错了什么,还是有意为之?总是重新启动所有这些东西看起来不是一个好的解决方案。
谢谢
这是一种预期的行为,有很多方法可以避免重新启动相关服务,我正在使用下一个 approach:
我 运行 我的大多数 docker 化服务使用下一种方法绑定到自己的静态 ip:
- 我为 docker 主机上的所有服务创建了 ip 别名
- 然后我 运行 每个服务将端口从这个 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
...