Windows下Docker主机网络容器服务访问

Posted

技术标签:

【中文标题】Windows下Docker主机网络容器服务访问【英文标题】:Docker host network container service access under Windows 【发布时间】:2020-11-22 09:20:56 【问题描述】:

如果我使用主机网络 (--network host) 运行 docker 容器,对于在容器中运行的任何服务,它们的暴露端口可以直接从主机访问吗?

我一直这么认为,直到我在 Windows 下使用主机网络运行 docker 容器 --

ip a s eth0显示我的容器IP地址是192.168.65.3 route | awk '/^default/ print $2 '192.168.65.1 但是,我的主机的 IP 为10.66.xx.xx

即容器IP地址和主机IP完全不同。不像https://www.metricfire.com/blog/understanding-dockers-net-host-option/ 所说的那样。

无论如何,如果我在容器中运行任何服务,如何公开它们的端口以便可以从主机直接访问它们? (我认为使用主机网络(--network host),您不再需要将端口从容器映射到主机)

谢谢

docker version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b
 Built:             Wed Mar 11 01:23:10 2020
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:29:16 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

【问题讨论】:

【参考方案1】:

Windows 不支持主机网络:

host 网络驱动程序仅适用于 Linux 主机,不支持用于 Mac 的 Docker Desktop、用于 Windows 的 Docker Desktop 或用于 Windows Server 的 Docker EE。

https://docs.docker.com/network/network-tutorial-host/

我建议尝试将-p 选项改为docker run,因为Windows 支持该选项。

另外,一位论坛用户suggests 在桥接模式下使用 VirtualBox 安装 Linux,然后可以使用主机网络。 YMMV。

【讨论】:

什么意思? paste.debian.net/plainh/bcc85bfb 我的错误,已删除。

以上是关于Windows下Docker主机网络容器服务访问的主要内容,如果未能解决你的问题,请参考以下文章

docker桥接模式

--network host所有容器和主机互通

解决Windows10下无法对docker容器进行端口访问(端口映射的问题)

docker网络

Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案

docker技术剖析--docker网络