无法启动 PostgreSQL Docker 容器 – “'/docker-entrypoint-initdb.d/': 不允许操作”

kni*_*ttl 11 postgresql permission-denied docker

尝试根据https://hub.docker.com/_/postgres上的说明启动 PostgreSQL 容器(如何使用此映像\xe2\x86\x92启动 postgres 实例),

\n
docker run -e POSTGRES_PASSWORD=mysecretpassword postgres:14\n
Run Code Online (Sandbox Code Playgroud)\n

给出以下错误:

\n
\n

ls: 无法访问 \'/docker-entrypoint-initdb.d/\': 不允许操作

\n
\n

唯一的变化是在使用PostgreSQL 的版本标记时删除了--name和参数。但即使使用 Docker Hub 中的完全相同的命令,也会出现相同的错误。-d14

\n

这是为什么?如何解决?是 PostgreSQL 镜像中的错误还是系统配置问题?

\n
\n

附加信息:

\n
$ docker version\nClient:\n Version:    17.12.0-ce\n API version:    1.35\n Go version:    go1.9.2\n Git commit:    c97c6d6\n Built:    Wed Dec 27 20:10:45 2017\n OS/Arch:    linux/amd64\n\nServer:\n Engine:\n  Version:    17.12.0-ce\n  API version:    1.35 (minimum version 1.12)\n  Go version:    go1.9.2\n  Git commit:    c97c6d6\n  Built:    Wed Dec 27 20:09:19 2017\n  OS/Arch:    linux/amd64\n  Experimental:    false\n\n$ uname -r\n5.13.0-16-generic\n\n$ cat /etc/lsb-release\nDISTRIB_ID=Ubuntu\nDISTRIB_RELEASE=21.10\nDISTRIB_CODENAME=impish\nDISTRIB_DESCRIPTION="Ubuntu 21.10"\n\n$ docker images postgres:latest\nREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE\npostgres            latest              14e58c3f6369        6 days ago          374MB\n$ docker images postgres:14\nREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE\npostgres            14                  14e58c3f6369        6 days ago          374MB\n
Run Code Online (Sandbox Code Playgroud)\n

看起来它可以与postgres:14-alpine.

\n

And*_*fat 13

我遇到了同样的问题。

PostgreSQL Docker 标签13并且14似乎正在使用 Debian bullseye,这似乎改变了文件系统方面的事情。

目前有两种解决方案:

  1. 降级到 PostgreSQL 13-buster,即 Docker tag postgres:13.4-buster,因为它似乎14没有-buster等效的。
  2. 升级当前正在运行的 Docker。从 Docker 版本开始20.10.6,似乎解决了这个问题。

作为与此问题相关的 GitHub 上的问题的参考,您可以在root user has nopermissions inside container #884 处找到它。

对于后代,来自 GitHub 的解决方案:

您需要更新主机上的 Docker、runc 和可能的 libseccomp。


kni*_*ttl 6

如果您出于某种原因无法或不想 \xe2\x80\x93 \xe2\x80\x93 升级 Docker,一个快速的解决方法是使用不同的标签,例如postgres:14-alpine.

\n