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

WSL2 Ubuntu环境下Testcontainers搭配Podman使用的配置问题

WSL2 Ubuntu环境下Podman对接Testcontainers配置方案

优先推荐方案:本地Ubuntu Podman直连(无跨实例兼容问题)

这个方案不需要依赖Windows端安装的Podman和独立的Fedora WSL实例,直接解决跨发行版套接字对接、镜像不同步的问题,步骤如下:

  • 先安装Podman的Docker兼容包,解决No Docker client strategy found报错:
    sudo apt update && sudo apt install -y podman podman-docker
    
    podman-docker会自动创建docker命令到podman的软链接,完全兼容Docker CLI调用规范,Testcontainers的客户端探测逻辑可以直接识别。
  • WSL2默认未开启systemd的情况下,不需要折腾systemctl,直接手动启动rootless模式的Podman服务即可,执行以下命令启动后台服务:
    podman system service --time=0 unix:///run/user/$(id -u)/podman/podman.sock &
    
    其中--time=0参数禁止服务空闲超时自动退出,末尾的&将进程放到后台运行。如果需要WSL启动时自动拉起服务,把这行命令追加到~/.bashrc(对应bash shell)或~/.zshrc(对应zsh shell)文件末尾即可。
  • 配置Testcontainers依赖的环境变量:
    export DOCKER_HOST=unix:///run/user/$(id -u)/podman/podman.sock
    
  • 权限配置(启动时报套接字权限错误再执行):
    sudo usermod -aG podman $USER
    
    执行完退出当前WSL终端重新进入即可生效。
  • 验证:执行docker info能正常返回Podman运行信息就代表配置完成,此时本地Ubuntu环境下podman构建的镜像直接存储在当前实例内,Testcontainers可以直接读取,不会出现镜像找不到的问题。

备选方案:对接Windows Podman自带的Fedora WSL实例

如果需要复用已有的Fedora端Podman服务,按以下步骤配置即可解决连接异常、镜像不同步问题:

  • 清理错误连接配置:先执行podman system connection ls列出所有已配置的远程连接,用podman system connection rm <错误连接名>删除之前配置的无效连接。
  • 正确添加Fedora实例的SSH连接:
    1. 先在Windows PowerShell中执行wsl -l确认Podman安装的Fedora发行版名称,默认名称为podman-machine-default,确认该实例已开启SSH服务、sshd进程正常运行。
    2. 在Ubuntu环境中执行以下命令建立SSH套接字隧道,将Fedora端的Podman套接字转发到本地:
      ssh -i ~/.ssh/podman-machine-default -o StrictHostKeyChecking=no -L /tmp/fedora-podman.sock:/run/user/1000/podman/podman.sock core@localhost -p $(wsl.exe -d podman-machine-default -- sh -c "ss -tulpn | grep sshd | grep -oP ':\K\d+' | head -n1") -N &
      
    3. 配置环境变量指向本地转发的套接字:
      export DOCKER_HOST=unix:///tmp/fedora-podman.sock
      
  • 解决镜像找不到的问题,两种方式选其一即可:
    • 构建镜像时指定远程连接,直接将镜像构建在Fedora实例存储中:
      podman --remote -H unix:///tmp/fedora-podman.sock build -t 你的镜像标签:版本 .
      
    • 本地Ubuntu端构建完镜像后,通过podman save/load命令将镜像同步到Fedora实例:
      # 本地导出镜像
      podman save 你的镜像标签:版本 -o image.tar
      # 导入到Fedora端Podman(注意替换成你实际的image.tar存放路径)
      wsl.exe -d podman-machine-default -- podman load -i /mnt/host/c/Users/你的用户名/image.tar
      

之前连接返回本地数据集的原因

之前配置连接后返回本地数据,核心原因是没有将添加的远程连接设置为默认连接,podman CLI默认调用本地的podman服务,自然返回本地存储的数据集。如果用podman system connection add添加连接,需要额外执行podman system connection default <你的远程连接名>切换默认连接到远程实例才会生效。


内容的提问来源于stack exchange,提问作者chaosbohne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:15:44