我在我的WSL2 Ubuntu上运行了一个简单的Web服务器,地址为https://0.0.0.0:4000(也可以通过Ubuntu hosts文件中映射到127.0.0.1的https://local.phx-cd.shoepping.at:4000访问)。我可以从Ubuntu和Windows主机连接到它 - 到目前为止都很好。但是此外,在集成了WSL2的Docker for Win中,我运行了一个Selenium Chrome容器,该容器连接并测试了该Web服务器上的内容(使用bridge),但是无法连接!
我连接到了容器,并尝试通过curl访问Web服务器 - 结果得到了拒绝连接的提示。由于我的计算机上有双重启动,我尝试切换到我的Linux发行版,然后在那里运行Web服务器和Linux Docker中的selenium,这样就可以连接到本地Web服务器了。所以我认为问题与WSL2有关。
我的docker-compose.yaml文件如下(我省略了我的Selenium Hub配置):
selenium-chrome-local:
image: selenium/node-chrome-debug:3.141.59
restart: always
ports:
- 5901-5902:5900
volumes:
- /dev/shm:/dev/shm
- ../../temp:/home/seluser/Downloads
depends_on:
- selenium-hub-local
environment:
- SCREEN_WIDTH=1920
- SCREEN_HEIGHT=1080
extra_hosts:
- "local.phx-cd.shoepping.at:10.99.99.1"
networks:
- selgrid
- dockerhost
networks:
selgrid:
dockerhost:
driver: bridge
ipam:
config:
- subnet: 10.99.99.0/24
如果您需要更多配置,请告诉我。谢谢。
host
网络模式(参见1)https://docs.docker.com/network/host/ 2)https://github.com/compose-spec/compose-spec/blob/master/spec.md#network_mode)作为一个愚蠢但容易的解决方法,或者深入研究iptables规则并查看容器流量如何进行。可能有一些东西会从容器中丢弃数据包。还有第三个选项是使用`macvlan`网络,并在您的网络中将容器放置在静态IP上。这将为您提供类似于主机模式的东西,而实际上并没有使用它。 - anemyte