我有这个基于 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) man page了解更多信息。
您可以使用 --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:/#
谨慎使用。不要在特权容器中运行不受信任的软件。
关于docker - 如何在 Docker 容器中挂载 --bind?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36553617/