重新加载docker stack网络配置 [英] Reload docker stack network configuration

查看:497
本文介绍了重新加载docker stack网络配置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有多个通过同一网络连接的Docker堆栈。如果我重新启动堆栈之一,则相关堆栈容器的内部ip地址似乎会更改。这会导致其他堆栈和容器中的服务名称解析错误。似乎内部docker名称服务无法识别网络更改。

I have multiple docker stacks that are connected over the same network. If I restart one of the stacks the internal ip addresses of the related stack container seems to change. That results in wrong service name resolutions in other stacks and containers. It seems that the internal docker name service doesn't recognize the network change.

如果尝试通过ping从堆栈容器外壳按服务名称访问其他容器(对于示例 ping my_stack_my_container_name )我从错误的IP地址成功返回。当我改用完整的容器名称( ping my_stack_my_container_name.134.134234234123 )时,返回的消息来自正确的IP。

If try to access other containers with ping from a stack container shell by the service name (for example ping my_stack_my_container_name) I got a successful return from a wrong IP address. When I use the full container name instead (ping my_stack_my_container_name.134.134234234123) the return comes from the right IP.

有什么方法可以触发堆栈网络/名称服务的重新加载?

Is there any way to trigger a reload of the stack networking/name service?

推荐答案

您确定没有重新加载吗?检查docker容器(应连接到重新加载的容器)是否未缓存DNS查询结果。我在haproxy配置中遇到了同样的问题,我放置了以下几行以强制haproxy仅将值保留为1s:

are you sure it's not reloaded? check if the docker containers (that should connect to reloaded container) are not caching DNS query results. I had same issue in haproxy config and I placed following lines to force haproxy to hold values only for 1s:

resolvers docker
    # well known docker dns server address
    nameserver dns 127.0.0.11:53
    #HAProxy will hold name-ip mapping for 1s, so for each request new container ip will be resolved, balancing load
    hold valid 1s 

(...)

backend stackName_app_backend
    server stackName_app_service stackName_ServiceName:80 resolvers docker check

这篇关于重新加载docker stack网络配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆