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

升级MacOS Sequoia 15后无法连接localhost:50517的Ryuk问题求助

排查Testcontainers Ryuk连接失败(Broken pipe)的思路
  • 验证Docker Desktop网络配置

    • 检查Docker Desktop的「设置 > 网络」,确认是否启用了「允许使用默认Docker套接字」,或者执行ls -l /var/run/docker.sock查看套接字权限,确保当前用户拥有读写权限
    • 尝试切换Docker Context:执行docker context use default后重新运行mvn verify
  • 检查MacOS Sequoia的防火墙与隐私权限

    • 打开「系统设置 > 网络 > 防火墙」,确认Docker Desktop和Homebrew安装的OpenJDK是否被允许接收传入连接
    • 查看「系统设置 > 隐私与安全性 > 完全磁盘访问权限」,确保Docker Desktop、运行mvn的终端/IDE已添加权限
  • 调试Ryuk容器状态与端口映射

    • 测试时暂停执行(如在测试代码中加断点),执行docker inspect <Ryuk容器ID>(替换为日志中的实际容器ID,例:8ea1bb2f94ea),查看NetworkSettings.Ports中5051端口的宿主机映射情况,确认端口绑定正确
    • 手动测试端口连通性:执行nc localhost 50517(替换为日志中的实际端口),检查是否能建立连接
  • 调整Testcontainers依赖版本

    • 当前Demo使用的Testcontainers版本可能与MacOS Sequoia存在兼容性问题,尝试升级到最新稳定版,或降级至之前能正常运行的版本(修改pom.xml中的testcontainers-bom版本)
  • 临时禁用Ryuk验证

    • 添加环境变量TESTCONTAINERS_RYUK_DISABLED=true,重新运行mvn verify。若测试正常执行,说明问题聚焦在Ryuk的连接机制上,可进一步排查Ryuk相关配置

环境信息

Java版本

java -version
openjdk version "21.0.4" 2024-07-16
OpenJDK Runtime Environment Homebrew (build 21.0.4)
OpenJDK 64-Bit Server VM Homebrew (build 21.0.4, mixed mode, sharing)

Docker版本

docker version
Client:
 Version:           27.2.0
 API version:       1.47
 Go version:        go1.21.13
 Git commit:        3ab4256
 Built:             Tue Aug 27 14:14:45 2024
 OS/Arch:           darwin/arm64
 Context:           desktop-linux

Server: Docker Desktop 4.34.2 (167172)
 Engine:
  Version:          27.2.0
  API version:      1.47 (minimum version 1.24)
  Go version:       go1.21.13
  Git commit:       3ab5c7d
  Built:            Tue Aug 27 14:15:41 2024
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.7.20
  GitCommit:        8fc6bcff51318944179630522a095cc9dbf9f353
 runc:
  Version:          1.1.13
  GitCommit:        v1.1.13-0-g58aa920
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

错误日志

14:51:41.924 [main] INFO  org.testcontainers.dockerclient.DockerClientProviderStrategy - Loaded org.testcontainers.dockerclient.UnixSocketClientProviderStrategy from ~/.testcontainers.properties, will try it first
14:51:42.060 [main] INFO  org.testcontainers.dockerclient.DockerClientProviderStrategy - Found Docker environment with local Unix socket (unix:///var/run/docker.sock)
14:51:42.061 [main] INFO  org.testcontainers.DockerClientFactory - Docker host IP address is localhost
14:51:42.070 [main] INFO  org.testcontainers.DockerClientFactory - Connected to docker: 
  Server Version: 27.2.0
  API Version: 1.47
  Operating System: Docker Desktop
  Total Memory: 7838 MB
14:51:42.080 [main] INFO  tc.testcontainers/ryuk:0.5.1 - Creating container for image: testcontainers/ryuk:0.5.1
14:51:42.250 [main] INFO  org.testcontainers.utility.RegistryAuthLocator - Credential helper/store (docker-credential-desktop) does not have credentials for https://index.docker.io/v1/
14:51:42.302 [main] INFO  tc.testcontainers/ryuk:0.5.1 - Container testcontainers/ryuk:0.5.1 is starting: 8ea1bb2f94ea72d9248e75babaf4a3e1be825deb49e66891e32896fd33cb1eb6
14:51:42.485 [main] INFO  tc.testcontainers/ryuk:0.5.1 - Container testcontainers/ryuk:0.5.1 started in PT0.411918S
14:51:42.490 [testcontainers-ryuk] WARN  org.testcontainers.utility.RyukResourceReaper - Can not connect to Ryuk at localhost:50517
java.net.SocketException: Broken pipe
        at java.base/sun.nio.ch.SocketDispatcher.write0(Native Method)
        at java.base/sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:62)
        at java.base/sun.nio.ch.NioSocketImpl.tryWrite(NioSocketImpl.java:394)
        at java.base/sun.nio.ch.NioSocketImpl.implWrite(NioSocketImpl.java:410)
        at java.base/sun.nio.ch.NioSocketImpl.write(NioSocketImpl.java:440)
        at java.base/sun.nio.ch.NioSocketImpl$2.write(NioSocketImpl.java:819)
        at java.base/java.net.Socket$SocketOutputStream.write(Socket.java:1195)
        at java.base/java.io.OutputStream.write(OutputStream.java:124)
        at org.testcontainers.utility.ResourceReaper$FilterRegistry.register(ResourceReaper.java:389)
        at org.testcontainers.utility.RyukResourceReaper.lambda$null$0(RyukResourceReaper.java:109)
        at org.rnorth.ducttape.ratelimits.RateLimiter.doWhenReady(RateLimiter.java:27)
        at org.testcontainers.utility.RyukResourceReaper.lambda$maybeStart$1(RyukResourceReaper.java:88)
        at java.base/java.lang.Thread.run(Thread.java:1583)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:06:00