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

Ubuntu18.04下Docker Python Client无法连接Docker Desktop求助

问题:Docker Python Client无法连接运行中的Docker Desktop(Ubuntu 18.04)

在Ubuntu 18.04系统上使用Docker Desktop,容器正常运行,但调用client = docker.from_env()时出现连接错误,报错核心为找不到Unix套接字文件;同时系统中不存在docker.service单元,无法通过systemctl启动。

报错信息

Traceback (most recent call last):
  File "/home/caohch1/anaconda3/envs/mointor/lib/python3.10/site-packages/urllib3/connectionpool.py", line 714, in urlopen
    httplib_response = self._make_request(
  File "/home/caohch1/anaconda3/envs/mointor/lib/python3.10/site-packages/urllib3/connectionpool.py", line 415, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/home/caohch1/anaconda3/envs/mointor/lib/python3.10/http/client.py", line 1283, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/home/caohch1/anaconda3/envs/mointor/lib/python3.10/http/client.py", line 1329, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/home/caohch1/anaconda3/envs/mointor/lib/python3.10/http/client.py", line 1278, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/home/caohch1/anaconda3/envs/mointor/lib/python3.10/http/client.py", line 1038, in _send_output
    self.send(msg)
  File "/home/caohch1/anaconda3/envs/mointor/lib/python3.10/http/client.py", line 976, in send
    self.connect()
  File "/home/caohch1/anaconda3/envs/mointor/lib/python3.10/site-packages/docker/transport/unixconn.py", line 43, in connect
    sock.connect(self.unix_socket)
FileNotFoundError: [Errno 2] No such file or directory

# 省略中间重复报错栈
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

尝试过的操作及结果

caohch1@caohch1-OptiPlex-7090:~/Desktop/monitor$ systemctl status docker
Unit docker.service could not be found.
caohch1@caohch1-OptiPlex-7090:~/Desktop/monitor$ systemctl start docker
Failed to start docker.service: Unit docker.service not found.
caohch1@caohch1-OptiPlex-7090:~/Desktop/monitor$ sudo snap status docker
error: unknown command "status", see 'snap help'.
caohch1@caohch1-OptiPlex-7090:~/Desktop/monitor$ sudo snap start docker
error: snap "docker" not found

解决方案

Docker Desktop for Linux与传统Docker Engine(docker.service)的运行方式不同:它以用户级应用运行,套接字文件放在用户专属的/run/user/$UID/目录下,而非默认的/var/run/docker.sock。只需让Python Client指向正确的套接字路径即可解决问题。

1. 确认Docker Desktop的套接字路径

先查看当前用户的UID:

echo $UID

然后验证套接字文件是否存在:

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

2. 临时指定套接字路径运行脚本

在启动Python脚本前,设置DOCKER_HOST环境变量:

export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
python your_script.py

3. 在Python代码中直接指定路径

修改代码,手动配置Docker客户端的连接地址:

import docker

# 替换1000为你的实际UID
client = docker.DockerClient(base_url='unix:///run/user/1000/docker.sock')

# 若使用APIClient则用以下代码
# from docker import APIClient
# client = APIClient(base_url='unix:///run/user/1000/docker.sock')

4. 永久配置环境变量(可选)

将环境变量添加到用户的bash配置文件(~/.bashrc或~/.zshrc),避免每次手动设置:

echo "export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock" >> ~/.bashrc
source ~/.bashrc

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:34:54