代码之家  ›  专栏  ›  技术社区  ›  Bo Qiang

如何通过URL而不是运行容器内的IP地址访问服务器

  •  0
  • Bo Qiang  · 技术社区  · 6 年前

    我有一个正在运行的Debian容器,在该容器内,我可以通过其IP ping服务器,如下所示:

    ping 9.1.1.1
    

    但如果我这样做:

    ping fileserver01
    

    它会产生错误,说它是不可访问的。

    但在主机(Ubuntu)中,这两个功能都很好。我能做些什么来修复它吗?谢谢!

    2 回复  |  直到 6 年前
        1
  •  1
  •   vivekyad4v    6 年前

    快速修复是使用 --add-host 当Docker运行或 extra_hosts 如果您使用的是撰写-

    例如-

    docker run -it --add-host fileserver01:9.1.1.1 debian ....

    它将在您的 /etc/hosts -

    ubuntu@ip-10-0-0-186:~$ sudo docker run -it --add-host fileserver01:9.1.1.1 debian bash -c "cat /etc/hosts ; ping fileserver01"
    127.0.0.1   localhost
    ::1 localhost ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    9.1.1.1 fileserver01
    172.17.0.4  23f2df5d9b24
    
      PING fileserver01 (9.1.1.1) 56(84) bytes of data.
        ^C
        --- fileserver01 ping statistics ---
        8 packets transmitted, 0 received, 100% packet loss, time 6999ms
    
        2
  •  0
  •   sarath kumar    6 年前

    如果您正在创建一个新的容器,它将位于默认网桥网络中。

    默认情况下,网桥网络没有DNS服务器。

    你可以做两件事:

    1.)将容器设置在默认网桥网络中,并使用--link选项手动配置容器以相互了解。

    docker run -d -P --name <container1> --link <container2>
    

    2.)创建新网络,创建容器时使用--network选项。

    docker run -d --name <container_name> --network <network_name>
    

    同一网络中的容器可以与引用容器名称而不是IP地址进行交互。

    docker container exec -it <container1_name> ping <container2_name>
    

    --链接是传统选项,因此可以在功能中删除。

    这是为其他容器识别容器。

    希望这对你有帮助!!!!