无法通过“network_mode: host”访问容器

dav*_*liu 2 docker docker-compose home-assistant

network_mode: host我无法在 docker 中使用windows 10。我尝试了不同的图像,但也不能。

docker-compose.yaml在下面发布我的。

docker-compose.yaml

  homeassistant2:
    container_name: hass2
    image: homeassistant/home-assistant:0.112.2
    network_mode: host
Run Code Online (Sandbox Code Playgroud)

但是当设置端口映射时,一切都很好

   ports:
      - '8123:8123'
   # network_mode: host
Run Code Online (Sandbox Code Playgroud)

我的环境是windows 10

我从命令dockerspect获取一些信息

我在下面发布了一些有关网络设置的内容。

        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "f084a1e7e4966f0bff678e4120c1bcbc7afdd1c55d5164b1dc4a606470c43bcc",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/default",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "host": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "656b532cdc48c9e34e616ec0a38ef944c5e52e2dfca506ca99e53b4b16206000",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }
]

Run Code Online (Sandbox Code Playgroud)

如果我需要提供其他东西来分析问题,请告诉我。

lar*_*sks 8

在 Windows 或 MacOS 下运行 Docker 时,实际上是在 Linux 虚拟机中运行 Docker。当您设置 时network_mode: host,您将容器连接到虚拟机的网络环境。这很少有用。

network_mode: host实际上只有在 Linux 上本地运行 Docker 时才有意义。

你最好坚持使用端口发布。