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

Ubuntu 22.04下Docker Desktop与Knative Func套接字问题及冲突求助

问题解决:Knative func Docker连接错误与dockerd依赖矛盾

一、修正Docker套接字地址

报错源于func默认读取/var/run/docker.sock,但Docker Desktop在Ubuntu上的套接字路径不同,且你之前设置的路径可能有误,按以下步骤处理:

  1. 定位正确套接字路径
    打开Docker Desktop,进入Settings > Resources > Advanced查看「Docker socket location」,通常路径为unix:///run/user/<你的UID>/docker.sock。也可通过命令直接确认:

    ls -l /run/user/$(id -u)/docker.sock
    

    若输出文件信息,即为正确路径。

  2. 设置环境变量

    • 临时生效(当前终端):
      export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
      
    • 永久生效(写入shell配置文件,如~/.bashrc):
      echo 'export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock' >> ~/.bashrc
      source ~/.bashrc
      
  3. 验证连接有效性
    执行docker info,若能正常输出Docker环境信息,说明环境变量配置正确,此时再运行func build即可。

二、解决dockerd依赖与Docker Desktop的矛盾

你完全不需要通过sudo apt install docker.io安装dockerd——Docker Desktop本身已内置dockerd守护进程,Knative func仅需可访问的docker守护进程,直接使用Docker Desktop内置的即可:

  1. 确认Docker Desktop的dockerd处于运行状态
    查看Docker Desktop右下角图标,显示「Running」即代表内置dockerd已在后台运行。

  2. 避免组件冲突
    不要安装docker.io包,它会与Docker Desktop的核心组件冲突,导致Docker Desktop被自动移除。若之前误装,可通过以下命令恢复:

    sudo apt remove docker.io docker-compose docker-compose-v2 containerd.io
    sudo apt install docker-desktop
    
  3. 独立dockerd替代方案(可选)
    若确实需要同时运行独立dockerd和Docker Desktop,可修改独立dockerd的套接字路径避免冲突:

    • 编辑/etc/docker/daemon.json,添加配置:
      {
        "hosts": ["unix:///var/run/docker-alt.sock", "tcp://127.0.0.1:2376"]
      }
      
    • 重启独立dockerd:
      sudo systemctl restart docker
      
    • 运行func时指定该套接字:
      DOCKER_HOST=unix:///var/run/docker-alt.sock func build
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:05:18