docker - 用于通信 2 个 docker 容器的 ip 地址是什么?

标签 docker http networking

我有 2 个 docker 容器,它们使用 docker 网络连接。我运行以下命令两次。

docker network connect [network id] [container id]

第一个容器需要通过 HTTP 与第二个容器通信。

我设置的ip是172.17.0.1,但是好像ip不对。

我相信这是那些有经验的 docker 用户的常见问题。

谁能帮帮我?

问候, 吉米

最佳答案

可能是容器没有连接到网络。为了检查您是否可以检查容器连接到的网络,以便它们可以通信。 使用命令 docker network inspect network_name

如果网络是默认网桥,您可以在容器附加到它之前看到以下 o/p:

[
   {
       "Name": "bridge",
       "Id": "f7ab26d71dbd6f557852c7156ae0574bbf62c42f539b50c8ebde0f728a253b6f",
       "Scope": "local",
       "Driver": "bridge",
       "IPAM": {
           "Driver": "default",
           "Config": [
               {
                   "Subnet": "172.17.0.1/16",
                   "Gateway": "172.17.0.1"
               }
           ]
       },
       "Containers": {},
       "Options": {
           "com.docker.network.bridge.default_bridge": "true",
           "com.docker.network.bridge.enable_icc": "true",
           "com.docker.network.bridge.enable_ip_masquerade": "true",
           "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
           "com.docker.network.bridge.name": "docker0",
           "com.docker.network.driver.mtu": "9001"
       },
       "Labels": {}
   }
]

一旦连接了两个容器,那么 o/p 将如下所示:

{[
    {
        "Name": "bridge",
        "Id": "f7ab26d71dbd6f557852c7156ae0574bbf62c42f539b50c8ebde0f728a253b6f",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {
                    "Subnet": "172.17.0.1/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Containers": {
            "3386a527aa08b37ea9232cbcace2d2458d49f44bb05a6b775fba7ddd40d8f92c": {
                "EndpointID": "647c12443e91faf0fd508b6edfe59c30b642abb60dfab890b4bdccee38750bc1",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            },
            "94447ca479852d29aeddca75c28f7104df3c3196d7b6d83061879e339946805c": {
                "EndpointID": "b047d090f446ac49747d3c37d63e4307be745876db7f0ceef7b311cbba615f48",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "9001"
        },
        "Labels": {}
    }
]

如您所见,o/p 中有两个容器的 ip 地址。

现在您可以附加到一个容器并尝试 ping 另一个容器以查看它们是否可以通信。

可以关注docker doc完整的细节

关于docker - 用于通信 2 个 docker 容器的 ip 地址是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55508084/

相关文章:

C++ 应用程序 : discover other IPs on LAN

networking - 什么是网络中的 DMZ?

networking - 如何选择多播地址供我的应用程序使用?

php - Symfony 4 Doctrine无法连接到Docker MySQL

bash - 如何使用 bash 命令强制取消 dockerbuild?

docker - 负载均衡器背后的Laravel事件-如何使事件对自动伸缩组中的所有服务器可见

php - 在 C 中使用 http 设置 PHP super 全局变量

sql-server - Docker SQL绑定(bind): An attempt was made to access a socket in a way forbidden by its access permissions

spring - 如何从 POST 请求中获取响应对象?

c# - 如何发送一个http basic auth post?