2017-02-13 260 views
0

我已經在我的機器上運行的一些搬運工集裝箱,其中之一是container_1泊塢窗容器的寫權限

我能夠使用訪問container_1的CLI

[email protected]~/D/m/l/db> docker exec -it container_1 bash 
[email protected]:/$ 

這讓我去container_1的cli但沒有寫權限。下面的命令給出一個權限被拒絕錯誤

[email protected]~/D/m/l/db> docker exec -it container_1 touch test.txt 
bash: test.txt: Permission denied 
[email protected]~/D/m/l/db>docker exec -it container_1 bash 
[email protected]:/$ touch test.txt 
bash: test.txt: Permission denied 

使用--previleged選項也嘗試,但問題依然存在

[email protected]~/D/m/l/db> docker --previleged=true exec -it container_1 touch test.txt 
bash: test.txt: Permission denied 

所以我有2個問題

  1. 如何做搬運工的工作許可?
  2. 對docker文件系統的這種修改是推薦的嗎?如果不是爲什麼?

我最近開始使用docker。請處理這個問題。在此先感謝:)

回答

2

作爲一個Linux用戶,它是綁定到Linux文件系統權限的Docker運行命令。所以,這個問題的答案取決於:

  1. 您正在運行(此默認爲root作爲命令的UID,但可以在你的圖像與USER命令,在Dockerfile覆蓋,或在docker run CLI,或在您的docker-compose.yml文件中)。

  2. 自從您使用相對路徑以來,您的命令運行的位置。這將默認爲/,但可以通過以各種方式更改工作目錄來重寫,通常在Dockerfile中使用WORKDIR

  3. 該位置的目錄和文件權限。

使用容器內部的ls -al來查看當前權限。使用id來查看當前的uid。使用docker exec您可以傳遞一個標誌來更改當前用戶。並且要更改權限,可以使用chmod更改權限本身,使用chown更改用戶所有權,使用chgrp更改組權限。例如:

docker exec -u root container_1 chmod 777 . 

該命令將允許任何用戶通過以root用戶身份運行來讀取或寫入容器內的當前文件夾。

這假定您尚未啓用SE Linux或AppArmor的任何其他安全性。