qwerthhusn
V2EX  ›  Docker

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

  •  
  •   qwerthhusn · Jul 17, 2020 · 2240 views
    This topic created in 2220 days ago, the information mentioned may be changed or developed.

    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 replies    2020-12-06 15:04:15 +08:00
    yiplee
        1
    yiplee  
       Jul 20, 2020
    julyclyde
        2
    julyclyde  
       Jul 20, 2020
    nginx 可以 proxy_pass 到一个变量,这样会导致一个 delayed evaluate 行为,就能反映出来 DNS 的变化了
    其他软件不了解
    qwerthhusn
        3
    qwerthhusn  
    OP
       Jul 20, 2020
    @julyclyde 那这种情况应该咋处理呢?我试了下 resolver valid 时效,发现没有作用
    qq296015668
        4
    qq296015668  
       Dec 6, 2020
    1. 你可以对容器设置固定 IP
    2. 使用 depends_on 管理启动顺序
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1031 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:27 · PVG 07:27 · LAX 16:27 · JFK 19:27
    ♥ Do have faith in what you're doing.