簡體   English   中英

initdb:無法更改 Postgresql 容器上目錄的權限

[英]initdb: could not change permissions of directory on Postgresql container

我是 docker 生態系統的新手,我正在嘗試使用 yaml composer 文件啟動一個簡單的 postgres 容器和一個卷,以便它保留其數據。 該文件如下:

# Use postgres/example user/password credentials
version: '3.3'
services:
    db:
        image: postgres
        environment:
            POSTGRES_DB: recrow
            POSTGRES_USER: recrow
            POSTGRES_PASSWORD: recrow_db_1000
            PGDATA: /var/lib/pgsql/data/pgdata
        volumes:
          - ./pgsql/data:/var/lib/pgsql/data/pgdata

但是,在調用docker-compose -f stack.yml up ,出現以下錯誤:

修復現有目錄 /var/lib/postgresql/data/pgdata 的權限... initdb:無法更改目錄“/var/lib/postgresql/data/pgdata”的權限:不允許操作

/var/lib/pgsql/data/pgdata應該是相對於容器根目錄的目錄,而./pgsql/data是主機上的路徑。 我正在從/mnt/storage上安裝的 ntfs-3g 分區運行容器。 可能是什么問題? 我也在沒有 root 權限的情況下運行 docker,將我的用戶添加到 docker 組,並且該用戶還可以完全訪問上述掛載點/mnt/storage

我猜這將與 ntfs-3g 不兼容。 PostgreSQL 映像包含一個入口點腳本,該腳本在容器啟動時進行一些權限更改: https : //github.com/docker-library/postgres/blob/972294a377463156c8d61297320c872fc7d370a9/9.6/docker-entrypoint.sh#L32-L38 我在https://askubuntu.com/questions/11840/how-do-i-use-chmod-on-an-ntfs-or-fat32-partition發現了另一個相關問題,該問題討論了能夠在掛載時設置權限. 但是無法通過chmodchown進行更改(這可能是這種情況下失敗的原因)。

不幸的是,我認為這里的答案是您不能安全地使用 ntfs-3g 來支持 Docker 主機卷安裝。

按照上面@liam-mitchell 的注釋,這就是答案。 使用如下命名的卷:

services:
  db:
    image: postgres:12-alpine
    volumes:
      - "postgres:/data/postgres"
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - PGDATA=/data/postgres

...

volumes:
  postgres:

我使用 OpenShift 並且在從 Docker Hub 運行這個官方鏡像時遇到了同樣的問題。

就我而言,解決方案是使用來自 red hat 存儲庫的官方 postgres 圖像,來自 red hat 存儲庫的圖像已解決此問題,這可以作為替代方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM