事象
コンテナからマウントしたディレクトリに対して操作を行うとアクセスが拒否される。
たとえばこんなコマンドを実行する。
docker run -i -v ${PWD}/hostdir:/guestdir -P centos touch /guestdir/test.txt
アクセス拒否され失敗する。
touch: cannot touch '/guestdir/test.txt': Permission denied
原因
SELinuxが邪魔している可能性がある。
SELinuxのが有効か無効かをgetenforce
コマンドで確認
実行結果がEnforcing
だとSELinuxが有効になっている。
回避する方法は2つ
その1:SELinuxを無効にする
一時的にSELinuxを無効にするには、
setenforce 0
その2:privileged
オプションを指定する
docker run
コマンドを実行時に--privileged
オプションを指定する。
docker run --privileged -i -v ${PWD}/hostdir:/guestdir -P centos touch /guestdir/test.txt
詳しくは、docker runコマンドのリファレンス参照
Runtime Privilege, Linux Capabilities, and LXC Configuration