You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2中Docker配置IPv4指定端口监听失败求助

WSL2中Docker监听IPv4地址配置问题解决

需求说明

在Windows工作站的WSL2环境部署Docker,让2015款MacBook Pro能通过IPv4地址访问Docker服务(暂不考虑连接安全性),目标是让Docker同时监听Unix套接字和0.0.0.0:2375。

已尝试操作

  • 编辑/etc/docker/daemon.json,添加配置:
    "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
    
    执行sudo systemctl restart docker重启服务。
  • 修改systemd的docker.service文件:
    初始将ExecStart设为/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375,后续移除所有-H参数,但问题未解决。

当前状态

  • systemctl status docker显示Docker正常运行,日志提示API listen on [::]:2375。
  • Windows PowerShell执行Get-NetTCPConnection -LocalPort 2375,结果显示仅监听IPv6回环地址::1,而非预期的0.0.0.0。

Docker服务状态日志

daly@Daly-PC:~$  systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2023-12-24 20:04:40 CET; 24min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 2081 (dockerd)
      Tasks: 20
     Memory: 41.7M
     CGroup: /system.slice/docker.service
             └─2081 /usr/bin/dockerd

Dec 24 20:04:40 Daly-PC dockerd[2081]: time="2023-12-24T20:04:40.682162156+01:00" level=warning msg="WARNING: API is accessible on http://0.0.0.0:2375 without encryption.\n         Access to the >
Dec 24 20:04:40 Daly-PC dockerd[2081]: time="2023-12-24T20:04:40.682200216+01:00" level=warning msg="WARNING: No blkio throttle.read_bps_device support"
Dec 24 20:04:40 Daly-PC dockerd[2081]: time="2023-12-24T20:04:40.682207886+01:00" level=warning msg="WARNING: No blkio throttle.write_bps_device support"
Dec 24 20:04:40 Daly-PC dockerd[2081]: time="2023-12-24T20:04:40.682211576+01:00" level=warning msg="WARNING: No blkio throttle.read_iops_device support"
Dec 24 20:04:40 Daly-PC dockerd[2081]: time="2023-12-24T20:04:40.682215876+01:00" level=warning msg="WARNING: No blkio throttle.write_iops_device support"
Dec 24 20:04:40 Daly-PC dockerd[2081]: time="2023-12-24T20:04:40.682228515+01:00" level=info msg="Docker daemon" commit=311b9ff graphdriver=overlay2 version=24.0.7
Dec 24 20:04:40 Daly-PC dockerd[2081]: time="2023-12-24T20:04:40.682251535+01:00" level=info msg="Daemon has completed initialization"
Dec 24 20:04:40 Daly-PC dockerd[2081]: time="2023-12-24T20:04:40.693404023+01:00" level=info msg="API listen on /var/run/docker.sock"
Dec 24 20:04:40 Daly-PC dockerd[2081]: time="2023-12-24T20:04:40.693452703+01:00" level=info msg="API listen on [::]:2375"
Dec 24 20:04:40 Daly-PC systemd[1]: Started Docker Application Container Engine.

问题

  1. 如何正确配置WSL2中的Docker,使其同时监听Unix套接字和0.0.0.0:2375 IPv4连接?
  2. 是否需要额外设置确保Docker监听指定IPv4地址?

解决方案

1. 统一配置来源,消除冲突

Docker的daemon.json和systemd的docker.service不能同时配置hosts参数,否则会导致监听行为异常。正确做法是仅通过daemon.json配置,清理systemd中的相关参数:

  • 编辑/etc/docker/daemon.json,确保内容如下(若文件不存在则创建):
    {
      "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
    }
    
  • 编辑/lib/systemd/system/docker.service,找到ExecStart行,修改为:
    ExecStart=/usr/bin/dockerd
    
    移除所有-H开头的参数,避免覆盖daemon.json的配置。
  • 禁用并停止docker.socket(该套接字会干扰Docker的监听设置):
    sudo systemctl stop docker.socket
    sudo systemctl disable docker.socket
    
  • 重新加载systemd配置并重启Docker:
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

2. 验证监听状态

在WSL2终端执行以下命令,确认Docker同时监听IPv4和IPv6的2375端口:

ss -tulpn | grep 2375

正常输出应包含0.0.0.0:2375和[::]:2375的监听记录。此时在Windows PowerShell中执行Get-NetTCPConnection -LocalPort 2375,就能看到0.0.0.0的监听条目。

3. 额外配置确保外部访问

  • WSL2防火墙放行端口:
    sudo ufw allow 2375/tcp
    
  • Windows防火墙放行端口:在Windows Defender防火墙中添加入站规则,允许TCP 2375端口的连接。
  • Mac访问设置:Mac端通过Windows工作站的IP地址+2375端口访问Docker服务(如tcp://192.168.x.x:2375),若WSL2 IP动态变化,可直接使用Windows主机名访问。

环境信息

  • Windows Subsystem for Linux(WSL2)
  • Docker版本:Docker version 24.0.7, build afdd53b
  • Windows操作系统:22H2 Build 22621.2861

内容的提问来源于stack exchange,提问作者Mohamed Ali Ben Thaier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:29:55