执行docker-compose构建服务遇/bin/sh权限错误求助(Docker 24)
问题:Docker构建触发
make: /bin/sh: Operation not permitted错误 执行命令docker-compose up -d --build --force-recreate时出现构建失败,已尝试Docker论坛提及的升级至Docker 20的方案,但当前使用Docker 24版本,问题仍未解决。
Bash错误信息
make: /bin/sh: Operation not permitted make: *** [Makefile:191: bcmath.lo] Error 127 ERROR: Service 'app' failed to build: The command '/bin/sh -c docker-php-ext-install bcmath intl mbstring mysqli opcache pdo_mysql simplexml soap sockets sodium xsl zip && pecl install mongodb' returned a non-zero code: 2
Dockerfile内容
FROM php:7.4-fpm-alpine3.16 RUN apk add --no-cache \ acl \ bash \ curl-dev \ curl \ git \ icu-dev \ libsodium-dev \ libxml2-dev \ libxslt-dev \ libzip-dev \ linux-headers \ oniguruma-dev \ openssh \ nano \ sqlite-dev \ supervisor \ tzdata \ vim \ $PHPIZE_DEPS RUN ln -s /usr/share/zoneinfo/Asia/Manila /etc/localtime RUN docker-php-ext-install \ bcmath \ intl \ mbstring \ mysqli \ opcache \ pdo_mysql \ simplexml \ soap \ sockets \ sodium \ xsl \ zip \ && pecl install mongodb RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ && sed -i "/history-search-/s/^#//g" /etc/inputrc \ && sed -i "/export PS1/a export HISTSIZE=10000" /etc/profile EXPOSE 9001
解决方案
1. 排查权限与Docker安全配置
- 确认本地构建目录权限,避免非root用户构建时出现权限不足
- 关闭Docker的
userns-remap功能:编辑/etc/docker/daemon.json,添加"userns-remap": false,重启Docker服务
2. 调整镜像与构建命令
- 更换基础镜像版本,比如用
php:7.4-fpm-alpine3.17替代3.16,旧Alpine版本可能存在兼容性问题 - 拆分
docker-php-ext-install命令,逐个安装扩展,定位具体出错步骤 - 在
apk add前执行apk update,确保Alpine包索引为最新
3. 检查系统安全限制
- Linux系统临时关闭SELinux测试:执行
sudo setenforce 0后重新构建 - 检查AppArmor配置,确保Docker进程拥有足够的构建权限
4. 修改Docker Compose安全选项
在docker-compose.yml的app服务构建配置中添加安全参数:
services: app: build: context: . dockerfile: Dockerfile security_opt: - seccomp:unconfined
内容的提问来源于stack exchange,提问作者Player1
相关产品推荐
相关产品推荐

