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

启动PostgreSQL Docker容器提示'/docker-entrypoint-initdb.d/'操作不允许

问题根因
  • 该问题是过旧Docker版本与新版PostgreSQL标准镜像的兼容性问题,不属于PostgreSQL镜像本身的Bug,也不是系统配置的通用错误。
  • 你使用的Docker 17.12.0-ce是2017年发布的旧版本,与Ubuntu 21.10的5.13内核、基于最新Debian构建的postgres:14镜像的默认seccomp安全策略不兼容,容器内部的部分系统调用被拦截,最终导致访问/docker-entrypoint-initdb.d/目录时报权限不足。
  • postgres:14-alpine镜像基于Alpine Linux、使用musl libc,没有触发被拦截的系统调用,因此可以正常启动。
解决方案

有三种可选处理方式,按优先级排序如下:

  1. 升级Docker到最新稳定版(最推荐)
    你当前使用的Docker版本已经落后主流维护版本超过5年,存在大量兼容性和安全漏洞,直接升级到Docker官方最新的稳定CE版本即可彻底解决该类兼容问题。
  2. 临时关闭seccomp安全限制(仅适合本地测试)
    启动容器时添加--security-opt seccomp=unconfined参数绕过seccomp拦截,命令如下:
docker run --security-opt seccomp=unconfined -e POSTGRES_PASSWORD=mysecretpassword postgres:14

该方案会降低容器安全等级,禁止在生产环境使用。
3. 长期使用Alpine版本的PostgreSQL镜像
如果暂时无法升级Docker,可以继续使用postgres:14-alpine这类Alpine基础的镜像,其PostgreSQL核心功能与Debian基础版完全一致,同时镜像体积更小、启动速度更快。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:39:03