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:/#
これは注意して使用してください。信頼できないソフトウェアを特権コンテナで実行しないでください。