V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qwerthhusn
V2EX  ›  Docker

问一个 docker 容器名(docker-compose 服务名)解析到 IP 的问题,该怎么处理

  •  
  •   qwerthhusn · 2020-07-17 15:28:43 +08:00 · 1718 次点击
    这是一个创建于 1609 天前的主题,其中的信息可能已经有所发展或是发生改变。

    docker-compose启动两个服务:

    • 服务sa,容器 IP 地址是自动分配的10.0.0.12
    • 服务sb,容器 IP 地址是自动分配的10.0.0.13

    其他服务指定了这两个服务,比如 nginx 的 upstream

    upstream sa {
      server sa:12345;
      keepalive 1024;
    }
    

    然后,停掉这两个服务docker-compose stop sa sb,然后先启动 sb,这时候 sb 会拿到地址10.0.0.12,再启动 sa,这时候 sa 会拿到地址10.0.0.13,跟之前翻了个个。

    此时问题就出现了,Nginx 缓存了 host 与 IP 的关系,导致反向代理到了"错误"的地址

    除了 nginx 之外,不知道其他的各式各样的软件会不会也会有类似的问题,就是配置的不是 IP 地址而是容器的 host 名字,依赖的容器 IP 发生了变化,一般这种问题该咋处理?????

    4 条回复    2020-12-06 15:04:15 +08:00
    yiplee
        1
    yiplee  
       2020-07-20 13:16:57 +08:00
    julyclyde
        2
    julyclyde  
       2020-07-20 17:23:23 +08:00
    nginx 可以 proxy_pass 到一个变量,这样会导致一个 delayed evaluate 行为,就能反映出来 DNS 的变化了
    其他软件不了解
    qwerthhusn
        3
    qwerthhusn  
    OP
       2020-07-20 17:38:12 +08:00
    @julyclyde 那这种情况应该咋处理呢?我试了下 resolver valid 时效,发现没有作用
    qq296015668
        4
    qq296015668  
       2020-12-06 15:04:15 +08:00
    1. 你可以对容器设置固定 IP
    2. 使用 depends_on 管理启动顺序
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3369 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:29 · PVG 18:29 · LAX 02:29 · JFK 05:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.