Docker WSL2 上的容器未添加到桥接网络
Docker containers on WSL2 don't get added to the bridge network
问题:我的容器(所有这些都是网络服务器)无法通过容器名称相互通信(DNS 查找失败)。我可以通过创建一个新网络并将每个创建的容器添加到该网络来让它们进行通信,但我宁愿不必手动执行此操作。
详细信息:根据the docs,所有新容器都应自动添加到bridge
网络中,并且能够通过container_name:port
。但是,在 WSL2 上,即使存在 bridge
网络,容器似乎也没有添加到其中,因为它们无法通过名称相互通信。
我尝试过的解决方法:
- 我现在正在通过创建网络并在该网络上添加容器来使其正常工作。但是,当我最终拥有大量容器时,这很麻烦且不可行。
docker-compose
是一个想法,但我的集成测试套件从其中创建了容器,我的所有集成测试都无法正常工作(我将不得不完全切换到新的集成测试套件)。
有没有办法让新容器自动加入桥接网络(或我自己的网络)而不使用docker-compose
?
- Docker 桌面版:3.2.2 (61853)
- Windows10;内部版本 19042.928
docker run --network="bridge" <mycontainer>
你可以用
检查里面到底发生了什么
docker inspect <containerID>
我会使用这些测试选项来隔离问题
1- 检查桥接网络本身在 WSL 系统中是否正常工作,因为 WSL 是新的有一些问题。
2- 检查容器,如果是,则表示 docker 正在正确创建容器
3-尝试解析IP以检查它是否正在解析,如果是那么它可能纯粹是DNS问题
4- 根据第 3 点将检查 DNS pod 是否正常运行。
如果可能,您能否分享确切的错误和 DNS pod 状态。
原来我的 docker 容器被添加到默认桥接网络中。但是,它们无法相互通信 is an intended design. 默认 bridge
网络上的容器无法通过主机名相互通信;他们必须使用 IP 进行通信。
问题:我的容器(所有这些都是网络服务器)无法通过容器名称相互通信(DNS 查找失败)。我可以通过创建一个新网络并将每个创建的容器添加到该网络来让它们进行通信,但我宁愿不必手动执行此操作。
详细信息:根据the docs,所有新容器都应自动添加到bridge
网络中,并且能够通过container_name:port
。但是,在 WSL2 上,即使存在 bridge
网络,容器似乎也没有添加到其中,因为它们无法通过名称相互通信。
我尝试过的解决方法:
- 我现在正在通过创建网络并在该网络上添加容器来使其正常工作。但是,当我最终拥有大量容器时,这很麻烦且不可行。
docker-compose
是一个想法,但我的集成测试套件从其中创建了容器,我的所有集成测试都无法正常工作(我将不得不完全切换到新的集成测试套件)。
有没有办法让新容器自动加入桥接网络(或我自己的网络)而不使用docker-compose
?
- Docker 桌面版:3.2.2 (61853)
- Windows10;内部版本 19042.928
docker run --network="bridge" <mycontainer>
你可以用
检查里面到底发生了什么docker inspect <containerID>
我会使用这些测试选项来隔离问题
1- 检查桥接网络本身在 WSL 系统中是否正常工作,因为 WSL 是新的有一些问题。 2- 检查容器,如果是,则表示 docker 正在正确创建容器 3-尝试解析IP以检查它是否正在解析,如果是那么它可能纯粹是DNS问题 4- 根据第 3 点将检查 DNS pod 是否正常运行。
如果可能,您能否分享确切的错误和 DNS pod 状态。
原来我的 docker 容器被添加到默认桥接网络中。但是,它们无法相互通信 is an intended design. 默认 bridge
网络上的容器无法通过主机名相互通信;他们必须使用 IP 进行通信。