以下のような感じで--volumes-fromを使ってデータボリュームコンテナからボリュームをマウントすると/dataの所有者がrootになってしまう(自分の環境だけ?)。
$ sudo docker run -d -v /data --name data busybox
$ sudo docker run -d --volumes-from data --name web <your image>
/dataに書き込むプロセスがroot以外のユーザ権限だと当然Access Deniedでエラーになる。
自分の場合はpassengerでwebアプリを動かしていてroot以外のユーザで動いていたので、ファイルを書き込もうとしてエラーとなりハマった。
Dockerのイメージをビルドする際に何かこれを解決する方法があるのか探してみたけど結局方法は見つからず。
最終的にはデータボリューム使うコンテナー(上記の例だとwebコンテナー)の起動時に所有権を変更するスクリプトを実行するようにして解決。
自分はphusion/passenger-ruby19というDockerイメージをベースにしているので以下で起動時にスクリプト実行してくれる。
RUN mkdir -p /etc/my_init.d
ADD init_perm.sh /etc/my_init.d/init_perm.sh
RUN chmod u+x /etc/my_init.d/init_perm.sh
Running scripts during container startup
https://github.com/phusion/passenger-docker#running_startup_scripts