前置

假设主机是ubuntu,且仅内部访问,ip是:

192.168.180.200

Ubuntu 的 Docker 配置可直接写成:

sudo systemctl edit docker

填写:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd \
  -H unix:///var/run/docker.sock \
  -H tcp://192.168.180.200:2375 \
  --containerd=/run/containerd/containerd.sock

注意必须写两次Service

然后执行:

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl status docker

确认监听:

sudo ss -lntp | grep 2375

预期:

LISTEN 0 4096 192.168.180.200:2375

Windows PowerShell 测试:

Test-NetConnection 192.168.180.200 -Port 2375

再测试 Docker API:

Invoke-RestMethod http://192.168.180.200:2375/version

Windows 或 IDEA 中配置以下环境变量:

DOCKER_HOST=tcp://192.168.180.200:2375
TESTCONTAINERS_HOST_OVERRIDE=192.168.180.200
TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock

PowerShell 临时设置:

$env:DOCKER_HOST="tcp://192.168.180.200:2375"
$env:TESTCONTAINERS_HOST_OVERRIDE="192.168.180.200"
$env:TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE="/var/run/docker.sock"

然后直接执行:

mvn test

也可以先验证 Docker CLI:

docker -H tcp://192.168.180.200:2375 ps

有一点需要注意:VMware 的 NAT 网络通常允许宿主机直接访问虚拟机,所以这个方案可以正常使用。不要将 Docker 监听地址改为:

0.0.0.0:2375

固定绑定 192.168.180.200 更安全。若 Ubuntu 开启了 UFW,可以仅允许 Windows 宿主机访问 2375:

sudo ufw allow from <Windows宿主机在VMware网段的IP> to 192.168.180.200 port 2375 proto tcp

接下来 Testcontainers 创建的 MySQL,Windows Spring Boot 会通过类似下面的地址连接:

jdbc:mysql://192.168.180.200:随机映射端口/test_db

而不是 localhost。这正是 TESTCONTAINERS_HOST_OVERRIDE 的作用。

作者:张三  创建时间:2026-07-24 12:02
最后编辑:张三  更新时间:2026-07-24 12:03
上一篇:
下一篇: