2015-08-27 79 views
3

我正在構建基於Oracle Linux 6.7的Docker鏡像。 這似乎創造了/目錄的默認權限是不正確:750我想將其更改爲755,但在Dockerfile的chmod命令似乎沒有任何效果。無法更改Docker中'/'目錄的權限

我如何設置/目錄的權限?我曾嘗試在Dockerfile中添加 USER root ,但那也不起作用。

Dockerfile

FROM oraclelinux:6.7 

RUN  ls -ld/
RUN  chmod 755/
RUN  ls -ld/

輸出docker build -t oraclelinux:fubar .

Sending build context to Docker daemon 2.048 kB 
Sending build context to Docker daemon 
Step 0 : FROM oraclelinux:6.7 
---> cfc75fa9f295 
Step 1 : RUN ls -ld/
---> Running in ed83a5c1f462 
drwxr-x--- 21 root root 4096 Aug 27 14:41/
---> 2a1f11648594 
Removing intermediate container ed83a5c1f462 
Step 2 : RUN chmod 755/
---> Running in 6f045908c424 
---> 1e44793993cb 
Removing intermediate container 6f045908c424 
Step 3 : RUN ls -ld/
---> Running in 0b1b10022e79 
drwxr-x--- 21 root root 4096 Aug 27 14:41/
---> f97f3e6711c5 
Removing intermediate container 0b1b10022e79 
Successfully built f97f3e6711c5 

如果我運行的容器和手動更改權限,它的工作原理:

docker run -ti oraclelinux:fubar

[[email protected] /]# ls -ld/
drwxr-x--- 21 root root 4096 Aug 27 14:56/
[[email protected] /]# chmod 755/
[[email protected] /]# ls -ld/
drwxr-xr-x 21 root root 4096 Aug 27 14:56/

回答

1

我發現了網絡的主要問題是關於有不正確的權限和它的「/」目錄上搜索後無法通過更改Dockerfile中的權限來修復。

這個post暗示它可能與umask有關,錯誤修復進入了1.8.0版本。所以,第一步是升級Docker引擎。它沒有解決問題。

另一個post建議當圖像建一個文件系統上,然後用在另一個,在「/」目錄中的權限設置不正確。在我製作圖像的系統上,使用了'devicemapper'。這可能是Dockerhub的圖像建立在不同的文件系統上。

所以,我切換到不同的Oracle Linux映像,由Oracle提供:

FROM oracle/oraclelinux:6.6

,它解決了這一問題。

0

這對我來說很好,我可以更改權限和/或當我運行它時擁有755的權限。

我會檢查您的docker home目錄中的權限。即/var/lib/docker

您可以可以檢查其中的圖像,也容器獲取存儲

ls -ld /var/lib/docker/aufs/diff 
ls -ld /var/lib/docker/aufs/mnt 
+0

'/ var/lib/docker' has 755. 沒有'/ var/lib/docker/aufs'但是有'/ var/lib/docker/vfs'。 '在/ var/lib中/泊塢窗/ devicemapper'有700這個目錄中,有三個子目錄:'devicemapper'和'metadata'有700和'mnt'有750名。 – swifthorseman