2017-06-01 91 views
0

我正在配置Docker撰寫文件以啓動和集成多個服務。在Docker中使用非虛擬文件夾撰寫爲卷

version: '3' 
services: 
    db: 
    ... 
    volumes: 
    - ./data/mariadb:/var/lib/mysql 
    ... 
    solr: 
    ... 
    volumes: 
     - ./data/solr/:/opt/solr/server/solr/mycores 
    ... 

在這樣做時,所有nessessary文件夾的文件夾中創建我跑碼頭工人,組成了

問題1:此文件夾沒有通用權限,並且docker無法存儲/寫入所有信息,並且容器引發錯誤。這些文件夾需要哪些權限(Windows,Linux)?

作爲第二種方法,我使用卷定義來創建數據存儲。

version: '3' 
services: 
    db: 
    ... 
    volumes: 
    - mariadb:/var/lib/mysql 
    ... 
    solr: 
    ... 
    volumes: 
     - solr:/opt/solr/server/solr/mycores 
    ... 
volumes: 
    mariadb: 
    solr: 

在此設置了捲上的數據文件夾虛擬機中創建和容器可以寫/沒有問題讀取所有數據。但是這些文件夾以某種方式隱藏在Windows的Hyper-V環境中。

問題2:如何在本節中定義名爲卷,以便它們指向物理驅動器(Windows,Linux)上虛擬機之外的定義文件夾?

回答

0

問題1:此文件夾沒有通用權限,並且docker無法存儲/寫入所有信息,並且容器引發錯誤。這些文件夾需要哪些權限(Windows,Linux)?

主機上的目錄需要設置權限位,以便容器內的用戶可以寫入。由於不同的/ etc/passwd和/ etc/group文件,容器和主機中的用戶名和組名的映射可能會有所不同。因此,您需要在配置主機上的權限時,根據容器內用戶的uid和gid設置權限。

問題2:如何在本節中以我們物理驅動器(Windows,Linux)上指向虛擬機之外定義的文件夾的方式定義命名卷?

如果您不使用命名卷,則在主機上的目錄上設置權限沒有解決方法。命名卷沒有此問題的唯一原因是因爲它們在圖像爲空或創建並附加到容器時被初始化爲圖像的權限和所有權(以及目錄內容)。主機卷(又名綁定掛載)沒有此初始化功能。

如果您需要通過名稱而不是通過特定用例的路徑來引用卷,則會有一個稱爲local persist的插件可以解決您的問題。我還沒有遇到需要這種情況的場景,所以我對它的工作效果沒有反饋。