咨询Docker Desktop(WSL2)环境中CNI插件配置文件的位置
Docker Desktop on WSL2 (Docker-in-containerd): CNI Config File Locations
核心前提
在你描述的Docker-in-containerd架构中,Docker引擎运行在services.linuxkit容器内,所以CNI配置文件并不在WSL2主机的常规路径中,而是存放在这个后台容器的文件系统里。
1. 进入services.linuxkit容器
要访问CNI配置,首先需要进入这个后台容器的shell环境:
- 最直接的方式是在WSL2终端执行Docker命令:
docker exec -it services.linuxkit sh - 如果Docker命令无法直接使用,也可以通过
nsenter切入容器的命名空间(需要root权限):sudo nsenter -t $(pgrep -f services.linuxkit) -m -u -i -n -p sh
2. 容器内的CNI配置路径
进入容器后,你可以在以下路径找到CNI相关文件:
/etc/cni/net.d/:这是CNI标准的配置目录,存放JSON格式的网络配置文件,比如默认网桥的10-docker-bridge.conf。文件里定义了VETH对创建、网桥关联、IP地址分配等规则,对应你提到的docker1-eth0、services1-eth0这类VETH设备的组网逻辑。/run/cni/:这个目录是CNI运行时生成的状态存储,包含网络命名空间的关联信息、插件运行日志等,但核心配置文件还是在/etc/cni/net.d/。
3. WSL2主机侧的间接访问(可选)
如果你不想进入容器,也可以在WSL2主机的/mnt/wsl/docker-desktop-data/路径下找到services.linuxkit容器的存储层,但这个路径的内部结构会随Docker Desktop版本变化,稳定性不如直接进入容器查看。
注意事项
- Docker Desktop的CNI配置是动态生成的:当你创建自定义Docker网络时,会自动在
/etc/cni/net.d/下生成对应的配置文件。 - 部分配置可能会被Docker Desktop的后台服务自动修改,手动修改后可能会被覆盖,建议先备份再调整。
内容的提问来源于stack exchange,提问作者TheDiveO
相关产品推荐
相关产品推荐

