安裝時使用下面的命令的體積:如何讀取和寫入掛載的卷而不以root身份運行?
docker run -t -i --volumes-from FOO BAR
從FOO的卷被安裝以根作爲所有者。據我所知,我無法讀取和寫入,但沒有以root身份運行。我必須以root身份運行還是以其他方式運行?
我已經嘗試在安裝前用其他所有者創建文件夾,但安裝似乎覆蓋了該文件夾。
編輯:如果它能夠以某種方式在安裝後自動完成一個chown
會工作。
安裝時使用下面的命令的體積:如何讀取和寫入掛載的卷而不以root身份運行?
docker run -t -i --volumes-from FOO BAR
從FOO的卷被安裝以根作爲所有者。據我所知,我無法讀取和寫入,但沒有以root身份運行。我必須以root身份運行還是以其他方式運行?
我已經嘗試在安裝前用其他所有者創建文件夾,但安裝似乎覆蓋了該文件夾。
編輯:如果它能夠以某種方式在安裝後自動完成一個chown
會工作。
我不知道爲什麼你不能改變你的源圖像文件夾的權限。這在我的實驗中沒有問題:
$ cat df.vf-uid
FROM busybox
RUN mkdir -p /data && echo "hello world" > /data/hello && chown -R 1000 /data
$ docker build -f df.vf-uid -t test-vf-uid .
...
Successfully built 41390b132940
$ docker create --name test-vf-uid -v /data test-vf-uid
e12df8f84a3b1f113ad5440b62552b40c4fd86f99eec44698af9163a7b960727
$ docker run --volumes-from test-vf-uid -u 1000 -it --rm busybox /bin/sh
/$ ls -al /data
total 12
drwxr-xr-x 2 1000 root 4096 Aug 22 11:44 .
drwxr-xr-x 19 root root 4096 Aug 22 11:45 ..
-rw-r--r-- 1 1000 root 12 Aug 22 11:43 hello
/$ echo "success" >/data/world
/$ ls -al /data
total 16
drwxr-xr-x 2 1000 root 4096 Aug 22 11:46 .
drwxr-xr-x 19 root root 4096 Aug 22 11:45 ..
-rw-r--r-- 1 1000 root 12 Aug 22 11:43 hello
-rw-r--r-- 1 1000 root 8 Aug 22 11:46 world
/$ cat /data/hello /data/world
hello world
success
/$ exit
我真的不明白你在做什麼,它似乎有點類似於我的解決方案,但如果你說它我想它的作品。 :) – jonalv
dockerfile是兩行,其中RUN用於更改/ data文件夾的UID。我構建並創建容器(不必運行它)。然後,我使用'--volumes-from'選項運行交互式容器作爲UID 1000,並看到/ data與UID 1000一起列出。 – BMitch
這是試圖重現[您的評論](http://stackoverflow.com/問題/ 39020093 /如何閱讀和寫入到安裝容積,而無需運行的-AS-根/ 39078791?noredirect = 1個#comment65395179_39020093)。從我的測試中,當我裝載它時,Docker沒有重置在映像中根目錄的權限。 – BMitch
因此,我最終做的是將卷裝入另一個容器,並從該容器中更改擁有者(使用最終設置中想要的擁有者的uid)。顯然,uid是uid的無論如何。這意味着我可以在最終容器中運行而不需要root。也許有更簡單的方法來做到這一點,但這似乎至少起作用。像這樣的東西:(從我的最終解決方案未經測試的代碼片段)
docker run -v /opt/app --name Foo ubuntu /bin/bash
docker run --rm --volumes-from Foo -v $(pwd):/FOO ubuntu bash -c "chown -R 9999 /opt/app"
docker run -t -i --volumes-from FOO BAR
您可以更改源容器中文件的所有權嗎? – BMitch
這裏沒有什麼特別的碼頭工人。如果你想以非特權用戶的身份寫入目錄,你需要使用'chown','chgrp'和'chmod'來設置適當的權限。 – larsks
是的,我意識到'chown'的作品。我實際上是用'docker exec -it ### bash'試過的,它工作正常。但我不想每次都這樣做。該文件是在Dockerfile的運行時生成的數據庫文件,因此我不知道如何更改它以及如何更改它。我想'''''''''''''''''' - ''''''''''''''''''''''我想'''''''''' - ''''' – jonalv