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

在AWS CodeBuild中运行Docker SDK Python脚本时遇连接错误

解决AWS CodeBuild中Python Docker SDK连接失败(FileNotFoundError)的问题

这个错误的核心原因是Python Docker SDK默认尝试连接Unix套接字/var/run/docker.sock,但在CodeBuild环境中,Docker守护进程可能未启动、套接字路径异常,或者执行进程无访问权限。以下是具体解决步骤:

1. 在CodeBuild中确保Docker守护进程启动

CodeBuild的标准镜像(如aws/codebuild/amazonlinux2-x86_64-standard:4.0)已预装Docker,但默认不会自动启动守护进程。需要在buildspec.yml的install阶段手动启动并等待服务就绪:

phases:
  install:
    commands:
      # 启动Docker守护进程,指定套接字路径和存储驱动
      - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 &
      # 等待Docker服务初始化完成
      - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"

2. 在Python脚本中显式指定Docker连接地址

避免SDK默认路径匹配错误,直接在代码里指定连接方式:

import docker

# 方式1:指定Unix套接字路径(需确认路径存在)
client = docker.DockerClient(base_url='unix:///var/run/docker.sock')

# 方式2:使用TCP连接(对应buildspec中启动的TCP端口)
# client = docker.DockerClient(base_url='tcp://127.0.0.1:2375')

3. 验证Docker环境可用性

在buildspec中加入验证命令,确认Docker服务和套接字正常:

# 检查套接字文件是否存在
ls -l /var/run/docker.sock
# 验证Docker服务状态
docker info

如果ls命令返回文件不存在,说明Docker守护进程启动失败,需检查dockerd启动命令是否正确。

4. 注意镜像选择

不要使用无Docker预装的CodeBuild镜像(如旧版aws/codebuild/python:3.9),优先选择官方标准镜像,这类镜像已配置好Docker依赖环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:45:11