wsl2 docker windows 的网络关系到底是怎么样的?

2021-09-02 11:47:09 +08:00
 Frankcox

在 Windows 的电脑上安装了 wsl2,发行版是 Ubuntu20.04 ,并在 Windows 上安装了 docker desktop 。 之后尝试在 docker 上部署单机 zookeeper 与 kafka.

docker run -d --name zookeeper -p 2181:2181 -t zookeeper

docker run -d --name kafka -p 9092:9092 --link zookeeper -e KAFKA_ZOOKEEPER_CONNECT=<zookeeper's ip>:2181 -e KAFKA_ADVERTISED_HOST_NAME=wsl2's ip -e KAFKA_ADVERTISED_PORT=9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka

部署 zookeeper 时没有问题,但部署 kafka 时提示

Ports are not available: listen tcp 0.0.0.0:9092: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

之后在 windows 上使用 netstat -aon|findstr '9092'与在 wsl2 上使用 netstat -ap | grep 9092 都没有结果,之后改了端口为 19092 后可以部署了,无论是在 windows 和 wsl2 上也都能查到端口占用。

网络这部分学得一直不好,想知道有没有针对 windows 与 wsl2 以及容器网络讲清楚的文章。

1387 次点击
所在节点    问与答
5 条回复
loveyu
2021-09-02 13:15:30 +08:00
wsl2 docker 在 windows 下我主要的用途就是拿来测试 build 镜像包, 这个是真好用
然后跑镜像直接 hyper 虚拟机里面执行了(windows 下经常乱套,而且内存占用小机器接受不了)
loveyu
2021-09-02 13:16:45 +08:00
kafka 镜像试试 bitnami-docker-kafka 这个,可能好用点
murphyyyy
2021-09-02 13:37:01 +08:00
之前猜测, wsl 跟 windows 之间应该是属于不同的网卡, 类似于同一个局域网中的两个 ip ( 猜测 ,网络学的本身并不好
Frankcox
2021-09-02 14:23:05 +08:00
@murphyyyy 是的,wsl2 和 windows 应该组成了一个局域网,在 wsl2 里配置代理的时候能看出来,在 windows 修改防火墙规则后二者也能 ping 通。
但是在考虑到 docker 后我就有些混乱了,我不太清楚如果我在 windows 里启动了一个服务,尝试连接 docker desktop 里的容器时是否需要经过 wsl2 的网络。windows wsl2 docker 容器这三者的网络关系。
Frankcox
2021-09-02 14:24:08 +08:00
@loveyu 我主要是学学容器这里,手边也有个纯 linux 的开发机

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/799427

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX