【问题标题】:Docker Bridge Network DNSDocker 桥接网络 DNS
【发布时间】:2020-05-09 22:46:48
【问题描述】:

我有两个容器在默认的 docker bridge 网络上运行。守护进程在特定范围内为它们分配一个“临时”ip。

network_mode: bridge -> 172.17.0.X

我怎样才能通过一些别名或名字联系到对方?

【问题讨论】:

    标签: docker docker-compose docker-container docker-networking docker-network


    【解决方案1】:

    让我们使用以下容器运行基本映像 Ubuntu:16.04:

    $ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    2461f410228b        ubuntu:16.04        "/bin/bash"         20 minutes ago      Up 20 minutes                           competent_shockley
    6da9d8196637        ubuntu:16.04        "/bin/bash"         21 minutes ago      Up 21 minutes                           hungry_mccarthy
    

    Docker 的默认网络,要了解更多关于默认网络的信息,请参考here:

    $ docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    f83800356529        bridge              bridge              local
    8169b2246500        host                host                local
    b61e4f39c0ec        none                null                local
    

    让我们使用docker inspect找出容器IP地址:

    $ docker inspect 2461f410228b | grep IPAddress
                "SecondaryIPAddresses": null,
                "IPAddress": "172.18.0.3",
                        "IPAddress": "172.18.0.3",
    
    
    $ docker inspect 6da9d8196637 | grep IPAddress
                "SecondaryIPAddresses": null,
                "IPAddress": "172.18.0.2",
    

    默认情况下,在 BRIDGE 网络中启动的容器将能够访问在同一网络中启动的其他容器

    root@2461f410228b:/# ping 172.18.0.2
    PING 172.18.0.2 (172.18.0.2) 56(84) bytes of data.
    64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.051 ms
    

    当您正在寻找使用名称/别名到达另一个容器时,在文件 /etc/hosts 中添加目标容器信息以解析 DNS:

    root@2461f410228b:/# cat /etc/hosts
    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
    172.18.0.3      2461f410228b
    172.18.0.2      docker2
    

    现在尝试使用主机名到达目标容器:

    root@2461f410228b:/# ping docker2
    PING docker2 (172.18.0.2) 56(84) bytes of data.
    64 bytes from docker2 (172.18.0.2): icmp_seq=1 ttl=64 time=0.077 ms
    

    我相信这可能会有所帮助。

    【讨论】:

    • 我的最终目标是将 phpmyadmin 容器连接到 mariadb 容器,避免在作曲家中链接。我应该在“服务器”输入中使用什么作为 DNS?
    • 没有得到“我应该在“服务器”输入中使用什么作为 DNS”。你能详细说明一下吗?你在说什么“服务器”?
    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    相关资源
    最近更新 更多