1 回答

TA貢獻1831條經驗 獲得超10個贊
你的假設
我知道不可能更改通過卷共享的文件的權限
僅部分正確,實際上有一組模式 —?:ro
&?:rw
— 您可以在通過文檔中描述的 docker-compose 安裝卷時使用:
標準模式
ro
用于只讀和rw
讀寫(默認)。
如果您的主機使用 .,您也可以使用:Z
和模式。:z
selinux
如果使用,
selinux
可以添加z
或選項來修改掛載到容器中的主機文件或目錄Z
的 selinux 標簽。這會影響主機本身上的文件或目錄,并可能產生 Docker 范圍之外的后果。
該
z
選項表示綁定掛載內容在多個容器之間共享。該
Z
選項表示綁定裝載內容是私有的且不共享的。使用這些選項時要格外小心。綁定安裝一個系統目錄,如
/home
或/usr
選項Z
會使您的主機無法操作,您可能需要手動重新標記主機文件。
這是一個示例,在我的主機上,這是我的文件的權限:
~ # ls -la ro rw?
ro:
total 0
drwxr-xr-x? 3 ben? staff? ?96 May 23 23:06 .
drwxr-xr-x? 9 ben? staff? 288 May 23 23:16 ..
-rw-r--r--? 1 ben? staff? ? 0 May 23 23:06 file
rw:
total 0
drwxr-xr-x? 3 ben? staff? ?96 May 23 23:06 .
drwxr-xr-x? 9 ben? staff? 288 May 23 23:16 ..
-rwxr-xr-x? 1 ben? staff? ? 0 May 23 23:06 file
然后用這個docker-compose.yml
version: '3.8'
services:
? test:
? ? image: alpine
? ? volumes:
? ? ? - ./ro:/root/ro:Z
? ? ? - ./rw:/root/rw:Z
? ? command: sleep 100000000000
這是容器上的結果
~ # ls -la ro rw
ro:
total 4
drwxr-xr-x? ? 3 root? ? ?root? ? ? ? ? ? 96 May 23 21:06 .
drwx------? ? 1 root? ? ?root? ? ? ? ? 4096 May 23 21:17 ..
-rw-r--r--? ? 1 root? ? ?root? ? ? ? ? ? ?0 May 23 21:06 file
rw:
total 4
drwxr-xr-x? ? 3 root? ? ?root? ? ? ? ? ? 96 May 23 21:06 .
drwx------? ? 1 root? ? ?root? ? ? ? ? 4096 May 23 21:17 ..
-rwxr-xr-x? ? 1 root? ? ?root? ? ? ? ? ? ?0 May 23 21:06 file
- 1 回答
- 0 關注
- 120 瀏覽
添加回答
舉報