正解は「コンテナ内のプロセスのUID/GIDとホスト側のファイル所有者が一致しない」です。Dockerコンテナはデフォルトでroot(UID 0)で実行されますが、セキュリティのためにDockerfileでUSER命令を使い非rootユーザーで実行するのがベストプラクティスです。その場合、マウントしたボリュームのファイル所有者がコンテナ内のユーザーと異なるとPermission deniedが発生します。対処法としては、Dockerfileでchownを実行する、docker run時に--user $(id -u):$(id -g)でホスト側のUID/GIDを指定する、またはentrypoint.shで起動時にパーミッションを調整する方法があります。