如何装入 – 在Docker容器内绑定?

我有这个容器基于debian:jessie (但是这不是很相关,因为我有与alpine:3.3相同的问题alpine:3.3 )。 我到了需要的地步

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

我得到了

 mount: permission denied 

我在任何内核日志中找不到任何内容, -vvv没有任何意义。 我显然可以在主机上(与任何其他的子树/节点)做到这一点。 在我上面的例子中,/ htdocs / www是一个Docker卷的挂载点,但是看起来并不重要,因为我无法mount --bind在容器内mount --bind任何一对子树/节点。

要使用mount系统调用,您需要CAP_SYS_ADMINfunction。 默认情况下,当产生一个容器时,Docker将会抛弃所有的function(意味着即使是root用户 ,也不允许这样做)。 有关更多信息,请参见mount(2)手册页 。

您可以使用--cap-add=SYS_ADMIN标志来启动您的容器,以将此function添加到您的容器中:

 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:/# 

请谨慎使用 。 不要在特权容器中运行不受信任的软件。