2017-07-21 168 views
-1

我想讓我的Docker容器讀取和寫入主機目錄。無法訪問在Docker容器中的掛載主機目錄

我與運行容器:

docker run -it -v $(pwd):/file logstash-5.1.2 

的容器裏面,我可以看到/文件在主機上擁有我的(非root)用戶的UID,和相同的權限上主機:

drwxrwxrwx. 2 1156 1156 4096 Jul 21 05:00 file 

並且根無法訪問/文件。

[email protected]:~# ls /file 
ls: cannot open directory /file: Permission denied 

我讀過有關創建具有相同uid的主容器中的用戶的帖子,但似乎在被皺起了眉頭。

  1. 爲什麼不能root訪問目錄?我認爲它可以做到一切。
  2. 在Docker中讓容器讀取和寫入掛載目錄(不屬於root)的最佳方式是什麼?
  3. 我們也在使用牧場主。這是否使它更容易?我還沒有遇到過不同的東西,主要是因爲我試圖看看我是否可以在Docker中完全做到這一點。
+0

這可能是在主機上運行的SELinux的問題。 –

+0

我應該提到,我們在主機上運行Red Hat。 – alabaster

回答

0

您應該將上下文更改爲svirt_sandbox_file_t以讓容器在此上下文中訪問此文件夾。

如果你確定文件夾權限,那麼只是嘗試;

chcon -R -t svirt_sandbox_file_t /your/host/path 

如果不確定試試;

chown -R groupId:userId /your/host/path 
chcon -R -t svirt_sandbox_file_t /your/host/path 

在這裏chcon這個命令適用於不斷變化的「/你/主機/路徑」的背景下,該svirt_sandbox_file_t SELinux上下文。

+0

或使用audit2allow爲您更改上下文。 –

相關問題