目次
はじめに
Docker ではホストとコンテナの間でファイルを共有するために ボリュームマウント や バインドマウント を利用します。
しかし、設定や権限の問題で「ファイルが見えない」「書き込みできない」などのトラブルが起こりがちです。
本記事では、確認手順ごとに 正常例/異常例/それに対応する解決方法 をセットで解説します。
主な原因
- マウント指定の誤り(
-v
や--mount
の書き方違い) - ホスト側ディレクトリ未作成
- 権限不足(UID/GID の不一致、root 権限必要)
- SELinux/AppArmor による制御
- read-only オプションの影響
確認と解決の手順
1. コンテナにマウントされているか確認
docker inspect コンテナ名 | grep Mounts -A 5
- 正常例
"Mounts": [
{
"Type": "bind",
"Source": "/home/user/share",
"Destination": "/data"
}
]
👉 Source
と Destination
が表示されていれば OK。
- 異常例
"Mounts": []
👉 マウントされていない。
解決方法
マウント指定を修正:
docker run -v /home/user/share:/data myimage
# または
docker run --mount type=bind,source=/home/user/share,target=/data myimage
2. ホスト側ディレクトリの存在確認
ls -ld /home/user/share
- 正常例
drwxr-xr-x 2 user user 4096 Sep 27 10:00 /home/user/share
👉 ディレクトリが存在し、権限も付与されている。
- 異常例
ls: cannot access '/home/user/share': No such file or directory
👉 ディレクトリが存在しない。
解決方法
ホスト側に作成:
mkdir -p /home/user/share
chmod 755 /home/user/share
3. コンテナ内でのマウント状況確認
docker exec -it コンテナ名 ls -ld /data
- 正常例
drwxr-xr-x 2 user user 4096 Sep 27 10:00 /data
👉 ホストの /home/user/share
と一致。
- 異常例
drwxr-xr-x 2 root root 4096 Sep 27 10:05 /data
👉 空のディレクトリが生成されている。
解決方法
- パスの誤りがないか確認→ 1.コンテナにマウントされているか確認へ
- ホスト側未作成の場合→ 2.ホスト側ディレクトリの存在確認へ
4. 書き込みテスト
docker exec -it コンテナ名 touch /data/test.txt
- 成功例
# ホストで確認
ls /home/user/share/test.txt
test.txt
👉 双方向で共有できている。
- 失敗例
touch: cannot touch '/data/test.txt': Permission denied
👉 権限またはセキュリティ設定が原因。
解決方法
- UID/GID を合わせる
sudo chown -R 1000:1000 /home/user/share
- SELinux 有効環境ではオプションを追加
docker run -v /home/user/share:/data:Z myimage
- read-only 指定されていないか確認(
:rw
を付与)
再発防止のポイント
docker inspect
でマウント状況を必ず確認する- ホスト側ディレクトリは事前に作成する
- コンテナ内ユーザーとホストの UID/GID を揃える
- SELinux/AppArmor の影響を理解して
:z
/:Z
を適切に利用する
まとめ
- 「どこで問題が起きているか」 を順番に切り分けるのが重要
docker inspect
→ls -ld
→exec ls
→touch
の流れで確認すると効率的- 出力が異常だった場合、本文中の対応策を選んで修正すればほとんどのケースで解決できる
あわせて読みたい


Linuxとコンテナ技術の関係性 – DockerやKubernetes
コンテナ技術とは? コンテナ技術は、アプリケーションとその依存関係を一つの「コンテナ」にまとめて隔離して実行する技術です。 従来の仮想化技術とは異なり、仮想マ…
あわせて読みたい


Docker コンテナ内でのファイル I/O エラーの原因と対処
はじめに Docker コンテナ内でファイルを読み書きしようとしたときに、以下のような I/O エラーが発生することがあります。 Permission denied Read-only file system N…