背景
Ubuntu 18.04 LTS + snap で docker をセットアップした.
/media
に外部ディスクをマウントしている(e.g. /media/work
)
ディレクトリのパーミッションなどきちんと設定しているが, /media
で docker build を実行(e.g. docker build .
)すると, cant stat ...
というエラーになる
理由
AppArmor がデフォルトで /media
などいくつかのマウントポイントを NG にしているからです.
dmesg を見ると以下のようなエラーメッセージがでてます.
audit: type=1400 audit(1591894851.159:72): apparmor="DENIED" operation="open" profile="snap.docker.docker" name="/media/work/msvc-wine/" pid=3598 comm="docker" requested_mask="r" denied_mask="r" fsuid=1001 ouid=1001
Docker & AppArmor: 30.000 foot view
https://medium.com/lucjuggery/docker-apparmor-30-000-foot-view-60c5a5deb7b
解決方法
- apparmor の設定で許可する
- 作業ディレクトリを普通の場所(i.e. $HOME 以下)にする
- docker で
--security-opt
で何かしら設定する?(未検証)
あたりでしょうか. とりあえずは $HOME のどこかにディレクトリ作って Dockerfile 配置して docker build
が手っ取りばやそうです.