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

GitHub自托管Action Runner搭配containerd时/var/run/docker.sock不存在的问题解决求助

GitHub自托管Action Runner搭配containerd时/var/run/docker.sock不存在的问题解决求助

我现在在运行一个GitHub自托管Action Runner,这个Runner需要用到Docker CLI,但我的主机用的是containerd作为运行时。Docker已经安装了,可是找不到活跃的/var/run/docker.sock,怎么才能让GitHub Action Runner正常工作呢?

以下是我执行相关命令的输出:

pi@kube-master:~ $ sudo find / -name "docker.sock"

pi@kube-master:~ $ sudo find / -name "containerd.sock"
/run/containerd/containerd.sock

pi@kube-master:~ $ docker info
Client: Docker Engine - Community
 Version:    25.0.3
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.12.1
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.24.5
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
errors pretty printing info

可行的解决方法:

  • 让Docker CLI直接连接containerd
    既然主机默认用containerd,我们可以给Docker CLI创建一个指向containerd套接字的context,这样不需要启动Docker daemon也能正常使用Docker命令:

    # 创建containerd上下文
    docker context create containerd --docker "host=unix:///run/containerd/containerd.sock"
    # 切换到这个上下文
    docker context use containerd
    

    执行完后再跑docker info应该就能看到连接到containerd的信息了,GitHub Action Runner会自动使用当前的Docker上下文,这样就能满足依赖。

  • 启动Docker daemon并配置使用containerd作为运行时
    如果你更习惯保留Docker daemon的方式,可以修改Docker的配置文件来让它用containerd做运行时:

    1. 编辑(或创建)/etc/docker/daemon.json,添加以下内容:
    {
      "runtimes": {
        "containerd": {
          "path": "containerd",
          "runtimeArgs": []
        }
      },
      "default-runtime": "containerd"
    }
    
    1. 重启Docker服务:
    sudo systemctl restart docker
    

    重启后/var/run/docker.sock就会正常生成,Docker daemon会通过containerd管理容器,这样GitHub Action Runner就能像往常一样连接使用了。

  • 针对GitHub Action Runner直接配置containerd(按需选择)
    部分特定的GitHub Actions支持直接使用containerd,你可以在Runner的配置里指定/run/containerd/containerd.sock的路径,但这种方法兼容性不如前两种,因为大部分Action还是基于Docker CLI开发的,优先推荐前两种方案。

备注:内容来源于stack exchange,提问作者Justin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:28:13