使用Colima运行Docker容器:启动testcontainers/ryuk镜像连接失败
问题核心
启动testcontainers/ryuk镜像时,报错无法连接unix:///var/run/docker.sock,本质是Ryuk默认尝试访问宿主机标准Docker socket路径,但Colima的socket实际位于${HOME}/.colima/default/docker.sock,现有环境变量配置未完全覆盖Ryuk的连接逻辑。
具体修复步骤
1. 修正环境变量的语法错误
你当前TESTCONTAINERS_HOST_OVERRIDE的配置多了一个冗余右括号,需修改~/.zprofile中的对应行:
export TESTCONTAINERS_HOST_OVERRIDE=$(colima ls -j | jq -r '.address')
修改后执行source ~/.zprofile让配置立即生效,再通过以下命令验证变量是否正确:
echo $DOCKER_HOST echo $TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE echo $TESTCONTAINERS_HOST_OVERRIDE
确保输出分别对应Colima的socket路径、/var/run/docker.sock和Colima的IP地址。
2. 创建Docker Socket软链接
Ryuk容器内部可能仍硬编码指向/var/run/docker.sock,直接将Colima的socket链接到该路径:
# 先备份原有的docker.sock(如果存在) sudo mv /var/run/docker.sock /var/run/docker.sock.bak # 创建软链接 sudo ln -s ${HOME}/.colima/default/docker.sock /var/run/docker.sock
执行后验证链接有效性:
ls -l /var/run/docker.sock
输出应显示指向你的Colima socket路径。
3. 调整Testcontainers配置文件
在.testcontainers.properties中补充指定Docker主机地址,覆盖默认策略:
docker.client.strategy=org.testcontainers.dockerclient.UnixSocketClientProviderStrategy docker.host=unix:///Users/你的用户名/.colima/default/docker.sock
注意将/Users/你的用户名替换为你的实际用户目录路径。
4. 直接指定DOCKER_HOST启动Ryuk(临时验证)
如果上述配置仍未生效,可在启动Ryuk时直接指定Docker主机地址:
DOCKER_HOST="unix://${HOME}/.colima/default/docker.sock" docker run <ryuk_image_id>
若此命令成功,说明问题出在环境变量或配置文件的加载优先级上,需重新检查终端会话的环境变量是否正确加载。
5. 验证Colima与Docker客户端连接
确保Colima处于运行状态,且Docker客户端已正确连接:
colima status docker info
如果docker info能正常返回Colima的Docker daemon信息,说明基础连接没问题。
内容的提问来源于stack exchange,提问作者Katia Iacomussi

