Source From Here
Question
最近在用 docker 建立專案編譯的環境,在 docker run 裡用 -v 指令將本地端的 ~/p4 目錄掛載到 container 裡的 /p4 使用,好讓 container 裡面可以存取到外面的原始碼:
檔案掛載沒有問題,但是進到 container 裡面想要 ls 一下,卻出現了 Permission denied 的問題:
查了一下,原來是 SELinux 的影響:
How-To
要解決這個問題,在 -v 參數的最後面,加上 :z 或是 :Z,分別代表的是:
加上 :z 或 :Z 後,docker 會幫我們 label 由這個目錄掛載起來的 volume,因此 container 裡面就不會被 SELinux 阻擋存取 volume 的資料了. 舉例來說,我可以把一開始的 docker run 指令改成下面這樣:
接著在 container 裡面,就能成功的存取 /p4 的檔案了:
Question
最近在用 docker 建立專案編譯的環境,在 docker run 裡用 -v 指令將本地端的 ~/p4 目錄掛載到 container 裡的 /p4 使用,好讓 container 裡面可以存取到外面的原始碼:
檔案掛載沒有問題,但是進到 container 裡面想要 ls 一下,卻出現了 Permission denied 的問題:
查了一下,原來是 SELinux 的影響:
How-To
要解決這個問題,在 -v 參數的最後面,加上 :z 或是 :Z,分別代表的是:
加上 :z 或 :Z 後,docker 會幫我們 label 由這個目錄掛載起來的 volume,因此 container 裡面就不會被 SELinux 阻擋存取 volume 的資料了. 舉例來說,我可以把一開始的 docker run 指令改成下面這樣:
接著在 container 裡面,就能成功的存取 /p4 的檔案了: