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

macOS下Docker Compose启动容器时挂载路径权限错误求助

问题描述

运行环境:macOS 13.3.1 (22E261)

相关配置文件如下:

apache.Dockerfile

FROM php:8.2-apache-bullseye

RUN set -eux; \
    apt-get update && apt-get install -y \
    vim \
    zip \
    procps \
    locales \
    libpq-dev \
    lsb-release \
    libicu-dev \
    iproute2 \
    unzip \
    iputils-ping && \
    docker-php-ext-install intl pdo pgsql pdo_pgsql && \
    mkdir /tmp/host/

COPY ./vhosts/*.conf /etc/apache2/sites-available/
RUN cd /etc/apache2/sites-available/ && a2ensite * && \
    a2enmod rewrite && \
    apachectl configtest && \
    service apache2 restart

USER root

docker-compose.yaml

version: '3.2'
services:
  apache_php8.2:
    build:
      context: .
      dockerfile: ./apache.Dockerfile
    container_name: ${APACHE_CONTAINER_NAME}
    ports:
      - target: 80 # the port inside the container
        published: 81 # the publicly exposed port
        protocol: tcp # the port protocol (tcp or udp)
        mode: host
    extra_hosts:
      - "host.docker.internal:host-gateway"
    networks:
      - local_docker_network
    volumes:
      - ${APACHE_DOCUMENT_ROOT}:/var/www/
      - ${HOST_TRANSFER_DIRECTORY}:/tmp/host/
networks:
  local_docker_network:
    driver: bridge

.env

APACHE_DOCUMENT_ROOT="/Users/jirka/Sites/"
HOST_TRANSFER_DIRECTORY="/Users/jirka/tmp/"
APACHE_CONTAINER_NAME="apache_php8.2"
COMPOSE_PROJECT_NAME="localdev"

执行docker container start 5d4ae59ee339时触发错误:

Error response from daemon: error while creating mount source path '/host_mnt/Users/jirka/tmp': mkdir /host_mnt/Users/jirka: operation not permitted Error: failed to start containers: 5d4ae59ee339

已尝试重启Docker daemon等常规方案,无效,需解决该挂载权限问题。

解决方案
  • 检查Docker文件共享权限
    打开Docker Desktop偏好设置 -> 资源 -> 文件共享,确认/Users/jirka(或整个/Users目录)已被添加到共享列表且勾选状态正常。若未添加,点击"+"选择对应目录,应用并重启Docker。

  • 修复本地目录权限
    对挂载目录执行权限修复命令:

    sudo chown -R jirka:staff /Users/jirka/tmp/
    sudo chmod -R 755 /Users/jirka/tmp/
    

    确保目录所属用户组与当前登录用户一致,保证Docker有足够访问权限。

  • 移除.env中的路径引号
    当前.env文件中路径包含双引号,可能导致Docker解析出错。修改.env文件为:

    APACHE_DOCUMENT_ROOT=/Users/jirka/Sites/
    HOST_TRANSFER_DIRECTORY=/Users/jirka/tmp/
    APACHE_CONTAINER_NAME=apache_php8.2
    COMPOSE_PROJECT_NAME=localdev
    

    保存后重新构建启动容器:

    docker-compose down
    docker-compose build --no-cache
    docker-compose up -d
    
  • 重置Docker文件共享缓存

    1. 打开Docker Desktop偏好设置 -> 资源 -> 文件共享,移除所有已共享目录,应用并重启Docker。
    2. 重启后重新添加/Users目录,再次应用并重启Docker。
  • 检查系统完整性保护(SIP)状态
    执行命令查看SIP状态:

    csrutil status
    

    若SIP开启且上述方案无效,可临时关闭SIP(需重启进入恢复模式):

    1. 重启Mac,按住Command+R进入恢复模式。
    2. 打开终端执行csrutil disable,重启系统。
    3. 测试容器启动,问题解决后建议重新开启SIP(执行csrutil enable)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 01:07:36