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

MacOS Ventura下docker-compose up连接拒绝错误求助

问题描述

我使用MacOS Ventura系统,多次重装Docker与docker-compose,也重启过系统排查zshrc路径问题,但在应用目录执行docker-compose up --build时始终出现连接拒绝错误。

报错信息

Traceback (most recent call last):
  File "urllib3/connectionpool.py", line 677, in urlopen
  File "urllib3/connectionpool.py", line 392, in _make_request
  File "http/client.py", line 1277, in request
  File "http/client.py", line 1323, in _send_request
  File "http/client.py", line 1272, in endheaders
  File "http/client.py", line 1032, in _send_output
  File "http/client.py", line 972, in send
  File "docker/transport/unixconn.py", line 43, in connect
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "requests/adapters.py", line 449, in send
  File "urllib3/connectionpool.py", line 727, in urlopen
  File "urllib3/util/retry.py", line 410, in increment
  File "urllib3/packages/six.py", line 734, in reraise
  File "urllib3/connectionpool.py", line 677, in urlopen
  File "urllib3/connectionpool.py", line 392, in _make_request
  File "http/client.py", line 1277, in request
  File "http/client.py", line 1323, in _send_request
  File "http/client.py", line 1272, in endheaders
  File "http/client.py", line 1032, in _send_output
  File "http/client.py", line 972, in send
  File "docker/transport/unixconn.py", line 43, in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker/api/client.py", line 214, in _retrieve_server_version
  File "docker/api/daemon.py", line 181, in version
  File "docker/utils/decorators.py", line 46, in inner
  File "docker/api/client.py", line 237, in _get
  File "requests/sessions.py", line 543, in get
  File "requests/sessions.py", line 530, in request
  File "requests/sessions.py", line 643, in send
  File "requests/adapters.py", line 498, in send
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker-compose", line 3, in <module>
  File "compose/cli/main.py", line 81, in main
  File "compose/cli/main.py", line 200, in perform_command
  File "compose/cli/command.py", line 70, in project_from_options
  File "compose/cli/command.py", line 153, in get_project
  File "compose/cli/docker_client.py", line 43, in get_client
  File "compose/cli/docker_client.py", line 170, in docker_client
  File "docker/api/client.py", line 197, in __init__
  File "docker/api/client.py", line 222, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))
[9] Failed to execute script docker-compose

环境版本

  • Docker版本:
Docker version 24.0.7, build afdd53b4e3
  • docker-compose版本:
docker-compose version 1.29.2, build 5becea4

Dockerfile

FROM python:3.11-alpine

WORKDIR /app

RUN apk add --no-cache gcc musl-dev linux-headers

RUN apk add --update --no-cache --virtual .tmp-build-deps \
    gcc libc-dev linux-headers postgresql-dev \
    && apk add libffi-dev

RUN pip install poetry

COPY pyproject.toml poetry.lock ./

RUN poetry config virtualenvs.create false \
    && poetry install --no-dev --no-interaction --no-ansi

COPY . /app


ENV FLASK_APP=app


EXPOSE 8000

CMD ["python", "app.py"]

docker-compose配置

version: '3.9'

services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    depends_on:
      - mongodb
      - rabbitmq
      - nginx
    environment:
      - CELERY_BROKER_URL=${CELERY_BROKER_URL} 
      - MONGO_URI=mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@mongodb:27017/
      - MONGO_DB=${MONGO_DB}
      - TIMEZONE=${TIMEZONE}
  nginx:
    image: nginx:1.25-alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro

  mongodb:
    image: mongo:4.2.3-bionic
    ports:
      - "27017:27017"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
    volumes:
      - ./db/seed.js:/docker-entrypoint-initdb.d/seed.js:ro
      - mongodb_data:/data/db

  mongo-express:
    image: mongo-express:1-20-alpine3.18
    ports:
      - "8081:8081"
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=${ME_CONFIG_MONGODB_ADMINUSERNAME}
      - ME_CONFIG_MONGODB_ADMINPASSWORD=${ME_CONFIG_MONGODB_ADMINPASSWORD}
      - ME_CONFIG_MONGODB_SERVER=mongodb
      - ME_CONFIG_MONGODB_ENABLE_ADMIN=true
      - ME_CONFIG_BASICAUTH_USERNAME=${ME_CONFIG_BASICAUTH_USERNAME}
      - ME_CONFIG_BASICAUTH_PASSWORD=${ME_CONFIG_BASICAUTH_PASSWORD}
    depends_on:
      - mongodb

  rabbitmq:
    image: rabbitmq:management
    container_name: rabbitmq
    restart: always
    environment:
      - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
      - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
      - RABBITMQ_DEFAULT_VHOST=/
    ports:
      - 5672:5672
      - 15672:15672
    volumes:
      - rabbitmq_data:/var/lib/rabbitmq

  celery-worker:
    build:
      context: .
    restart: always
    environment:
      - CELERY_BROKER_URL=amqp://admin:admin@rabbitmq:5672
      - MONGO_DB={MONGO_DB}
    command: celery -A app.adapters.queue.celery_consumer worker --loglevel=info 
    depends_on:
      - rabbitmq
 
volumes:
  mongodb_data: 
  rabbitmq_data:
解决方案

该错误核心是docker-compose无法连接到Docker守护进程,按以下步骤排查修复:

  • 确认Docker Desktop处于运行状态
    Mac系统下Docker守护进程依赖Docker Desktop应用启动,直接命令行无法启动。打开Launchpad启动Docker,等待状态栏鲸鱼图标显示"Running"后,再执行相关命令。

  • 检查用户Docker组权限
    执行groups命令查看当前用户是否在docker组内,若没有则执行:

    sudo usermod -aG docker $USER
    

    重新登录终端或重启系统后生效。

  • 验证Docker守护进程连接可用性
    先执行docker ps测试基础连接:

    • 若同样报错,打开Docker Desktop的Settings > Advanced,确认"Allow the default Docker socket to be used"已勾选。
    • 检查环境变量是否异常:执行echo $DOCKER_HOST,若输出不是空或unix:///var/run/docker.sock,执行unset DOCKER_HOST后重试。
  • 修复版本兼容性问题
    你使用的docker-compose 1.29.2版本较旧,与Docker 24.0.7存在兼容性风险:

    1. 卸载旧版docker-compose:sudo rm /usr/local/bin/docker-compose
    2. 使用Docker Desktop内置的docker compose(注意是空格而非连字符)替代,执行docker compose up --build即可自动匹配版本。
  • 清理Docker残留文件后重装
    多次重装可能残留无效配置:

    1. 打开Docker Desktop > Settings > Troubleshoot > Uninstall完成彻底卸载
    2. 删除残留文件:
      rm -rf ~/.docker
      sudo rm -rf /Library/Application\ Support/com.docker.docker
      sudo rm -rf /var/run/docker.sock
      
    3. 重新安装Docker Desktop
  • 检查zshrc配置
    打开~/.zshrc,删除错误的Docker环境变量配置(如错误设置的DOCKER_HOST或DOCKER_CERT_PATH),执行source ~/.zshrc使修改生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:52:02