簡體   English   中英

如何在 Docker 容器中掛載 --bind?

[英]How do I mount --bind inside a Docker container?

我有這個基於debian:jessie的容器(但這不是很相關,因為我對alpine:3.3有同樣的問題)。 我到了我需要的地方

mount --bind /htdocs/www /home/user/example.com/www

我得到

mount: permission denied

我在任何內核日志中都找不到任何東西,並且-vvv沒有產生任何有趣的東西。 我顯然可以在主機上執行此操作(使用任何其他子樹/節點對)。 在我上面的示例中,/htdocs/www 是 Docker 卷的掛載點,但它看起來並不重要,因為我無法在容器內mount --bind任何一對子樹/節點。

要使用mount系統調用,您需要CAP_SYS_ADMIN功能。 默認情況下,Docker 在生成容器時會刪除所有功能(這意味着即使作為root ,您也不能做任何事情)。 有關更多信息,請參閱mount(2) 手冊頁

您可以使用--cap-add=SYS_ADMIN標志啟動容器以將此功能添加到您的容器中:

root@host > docker run --rm -it --cap-add=SYS_ADMIN debian:jessie
root@ee0b1d5fe546:/# mkdir /mnt/test
root@ee0b1d5fe546:/# mount --bind /home /mnt/test/
root@ee0b1d5fe546:/# 

請謹慎使用 不要在特權容器中運行不受信任的軟件。

嘗試使用--privileged標志:

docker run --rm -it --privileged=true debian
mkdir /mnt/test
mount --bind /home /mnt/test/

我正在搜索 Docker/Kubernetes 的一些信息以授予功能權限,並找到了一些信息

docker run --rm -it --security-opt apparmor:unconfined --cap-add=SYS_ADMIN debian:jessie
mkdir /mnt/test
mount --bind /home /mnt/test/

有助於。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM