2017-07-03 140 views
0

我是碼頭生態系統的新手,我試圖通過使用yaml作曲文件來創建一個簡單的postgres容器以及一個卷,以便保留其數據。該文件內容如下:initdb:無法更改Postgresql容器上目錄的權限

# 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我收到以下錯誤:

fixing permissions on existing directory /var/lib/postgresql/data/pgdata ... initdb: could not change permissions of directory "/var/lib/postgresql/data/pgdata": Operation not permitted

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

回答

0

我猜這將是與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主機卷掛載。