[英]Initialize PostgreSQL Container with docker-entrypoint-initdb.d script
[英]Cannot start PostgreSQL Docker container – "'/docker-entrypoint-initdb.d/': Operation not permitted"
嘗試根據https://hub.docker.com/_/postgres的說明啟動 PostgreSQL 容器(如何使用此映像→啟動 postgres 實例)
docker run -e POSTGRES_PASSWORD=mysecretpassword postgres:14
給出以下錯誤:
ls: 無法訪問'/docker-entrypoint-initdb.d/': 不允許操作
唯一的變化是在使用 PostgreSQL 的版本標簽14
時刪除了--name
和-d
參數。 但即使使用來自 Docker 集線器的完全相同的命令,也會出現相同的錯誤。
為什么會這樣,如何解決? 是 PostgreSQL 映像中的錯誤還是系統配置問題?
附加信息:
$ docker version
Client:
Version: 17.12.0-ce
API version: 1.35
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:10:45 2017
OS/Arch: linux/amd64
Server:
Engine:
Version: 17.12.0-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:09:19 2017
OS/Arch: linux/amd64
Experimental: false
$ uname -r
5.13.0-16-generic
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=21.10
DISTRIB_CODENAME=impish
DISTRIB_DESCRIPTION="Ubuntu 21.10"
$ docker images postgres:latest
REPOSITORY TAG IMAGE ID CREATED SIZE
postgres latest 14e58c3f6369 6 days ago 374MB
$ docker images postgres:14
REPOSITORY TAG IMAGE ID CREATED SIZE
postgres 14 14e58c3f6369 6 days ago 374MB
看起來它適用於postgres:14-alpine
。
我遇到了同樣的問題。
PostgreSQL Docker 標記13
和14
似乎正在使用 Debian 的bullseye
,這似乎改變了文件系統方面的事情。
目前有兩種解決方案:
13-buster
,即 Docker 標簽postgres:13.4-buster
,因為14
似乎沒有-buster
等價物。20.10.6
開始,它似乎解決了這個問題。作為 GitHub 上與此問題相關的問題的參考,您可以在root user has no permissions within container #884中找到它。
對於后代,來自 GitHub 的解決方案:
您需要更新主機上的 Docker、runc 和可能的 libseccomp。
如果您不能或不想(無論出於何種原因)升級 Docker,一個快速的解決方法是使用不同的標簽,例如postgres:14-alpine
。
版本postgres:12.9出現問題 升級到版本postgres:13-alpine修復此問題。
將 docker 版本升級到 20.* 工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.