搬磚心得 Docker容器掛載目錄的使用者許可權問題

2021-10-10 02:46:55 字數 972 閱讀 8765

問題

docker容器掛載目錄下部分檔案,在容器外沒有許可權進行移動刪除等操作。

原因docker容器內與伺服器共享同乙個linux核心,驗證許可權時只認uid和gid(相關知識參照所以不管使用者名稱是什麼,對乙個特定檔案的所有者,容器內外都是只認相應的uid的。

啟動docker容器時如果不指定使用者,則會預設為root使用者,如果在容器內對掛載目錄下的檔案進行了操作,則相應檔案的所有者就會公升級為root,在容器外如果只有非root使用者的許可權,就無法對這些檔案進行操作了。

而通常我們在公用的伺服器上操作時,一般都不會擁有root許可權,因此兩個方法解決這個問題:

啟動docker容器時,用-u引數指定使用者:

docker run (省略其餘引數)

-u uid -it container_name bash

因為容器內部是不知道某個uid具體對應的使用者名稱是什麼的,所以得告訴它確切的uid,root使用者一般預設都是1001,特定使用者可以用

>>

id

檢視當前使用者的uid

這樣在容器內對檔案進行的操作都是以該使用者的身份進行的,就不會出現公升級到root的情況了。

已經預設root使用者啟動容器並且修改過檔案的所有者了,在容器外又沒有許可權用chmod修改檔案的狀態,那麼只能再用root身份啟動乙個容器,在容器內部以root身份修改檔案的所有者,修改方式詳見

簡單修改可以用:

>> chown uid:gid filename
修改到自己賬戶的uid,在容器外會同步,那麼就可以在容器外用自己的賬戶修改檔案了。

總結docker容器內的環境看似可以隨意配置,不會影響系統基礎的環境,但實際上還是需要共享核心的,這樣隨意地就可以得到root許可權似乎還是有點可怕,不知道在真正的大伺服器上針對這樣的問題都是怎麼管理的,要是有大神了解還希望能簡單講講。

docker 容器掛載

設定容器目錄為唯讀模式 docker run it name haha3 v opt haha3 opt haha3 rocentos bin bash 3 建立volume容器,多個容器共享資料 建立volume container docker run it v var volume1 v va...

docker容器目錄掛載

我們可以在建立容器的時候,將宿主機的目錄與容器內的目錄進行對映,這樣我們就可以實現宿主機和容器目錄的雙向資料自動同步 我們cp命令來實現資料傳遞,這種方式比較麻煩 我們通過容器目錄掛載,能夠輕鬆實現 上傳,配置修改,日誌同步等需求 docker run it v 宿主機目錄 容器目錄 映象名dock...

docker 修改容器掛載目錄

systemctl stop docker.service 一定要停止容器,不然修改無效 檢查容器是否已停止 docker ps mountpoints skipmountpointcreation false home gitlab runner skipmountpointcreation fa...