簡體   English   中英

Docker:如何在純數據容器中設置文件所有權?

[英]Docker: how to set up file ownership in a data-only container?

我已經使用純數據容器對 PHP 應用程序進行了 dockerized。 我使用了這個( docker-symfony )容器堆棧。

這是純數據容器的簡單定義:

FROM debian:jessie
MAINTAINER Vincent Composieux <vincent.composieux@gmail.com>
VOLUME /var/www/symfony

除了所有權和權限之外,一切都很好。 我注意到,當我將卷(我的本地目錄)安裝到僅數據容器時,安裝的文件仍然歸主機上的當前用戶所有,而在容器內無法識別。

例如,如果我使用ltarasiewicz docker-compose up作為ltarasiewicz啟動容器,然后登錄到數據容器,我可以看到掛載的文件的所有權設置為:

drwxrwxr-x 7 1000 1000 4096 Jun 10 21:27 symfony

uidgid1000對應於我的主機的用戶uidgid 因為容器內沒有這樣的用戶,所以只顯示symfony目錄的 ID。 這使得無法運行應用程序。

所以我的問題是如何將卷安裝到僅數據容器並為安裝的文件分配正確的所有權,例如root:www-data或我選擇的任何其他用戶。

使用與運行應用程序相同的圖像來制作數據容器。 例如,如果您想制作一個 postgresql 數據庫,請為您的數據容器使用 postgres 圖像:

$ docker run --name dc postgres echo "Data Container"

此命令創建了數據容器並退出 - 請注意,數據容器不會繼續運行。

對於 postgres,在您使用卷啟動數據庫之前,卷所有權不會正確設置:

$ docker run -d --volumes-from dc postgres

但是其他鏡像會在 Dockerfile 中正確設置所有權。

當然,如果您只是想修復數據容器中的權限,只需掛載並運行 chown:

$ docker run --volumes-from dc postgres chown -R postgres:postgres /var/lib/postgresql/data

暫無
暫無

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

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