Docker tmpfsマウント完全ガイド|メモリ上の一時領域をコンテナに提供
4-2 Named Volume、4-3 Bind Mount と2つの「永続化」を学んできました。最後の3つ目は真逆の発想——tmpfs(ディスクに絶対書かない、メモリ上の一時領域)です。
「一時的だからこそ価値がある」データ、たとえば機密情報・セッションデータ・高速キャッシュを扱うときに使います。
💡 この記事のゴール
① tmpfs とは何か(Linux標準機能であることを含め)
② Docker で tmpfs を使う2つの書式(
③ 機密情報・キャッシュ向けの典型パターン
④ Named Volume / Bind Mount との使い分けまとめ
① tmpfs とは何か(Linux標準機能であることを含め)
② Docker で tmpfs を使う2つの書式(
--tmpfs、--mount type=tmpfs)③ 機密情報・キャッシュ向けの典型パターン
④ Named Volume / Bind Mount との使い分けまとめ
目次
- tmpfs とは何か
- なぜDockerで tmpfs を使う?
- 2つの書式
- ハンズオン:tmpfs に書いたファイルは再起動で消える
- サイズと権限のオプション
- Linux限定という制約
- 3方式の総まとめ(Named / Bind / tmpfs)
- まとめ
1. tmpfs とは何か
tmpfs は Linux カーネルの標準機能で、物理ディスクではなくメモリ(RAM)上に作るファイルシステムです。Dockerが独自に作ったものではなく、Linux に昔からあります(/tmp や /run が tmpfs で実装されているディストリビューションも多い)。
【tmpfs の位置づけ】
⚡ tmpfs
RAM 上
超高速・揮発性
💾 Named Volume / Bind Mount
ディスク上
永続・I/O遅め
↑ tmpfs は再起動・コンテナ停止でデータ消滅。その代わり、ディスク書込が発生しない
2. なぜDockerで tmpfs を使う?
「消える」ことが機能になる場面があります。
| ユースケース | なぜ tmpfs が向く? |
|---|---|
| 機密情報の一時保管 (APIキー・セッションID・復号鍵) |
ディスクに書かれないので、万一の流出リスクが低い |
| 高速キャッシュ (テンプレートキャッシュ・セッション・Rails の tmp/) |
RAM 速度で読み書きできる(SSDの数倍〜数十倍) |
| ログや中間ファイルの一時置き場 | 容量制限を付けてディスク逼迫を防げる |
| 読み取り専用コンテナと併用 ( --read-only) |
コンテナ全体を ro にして /tmp だけ tmpfs に開放、セキュリティ向上 |
💡 「永続化したくない」ことこそが要件
Named Volume や Bind Mount が「データを残す」仕組みなのに対し、tmpfs は「絶対に残さない」仕組み。対極の設計思想です。
Named Volume や Bind Mount が「データを残す」仕組みなのに対し、tmpfs は「絶対に残さない」仕組み。対極の設計思想です。
3. 2つの書式
3-1. --tmpfs(簡単な書き方)
docker run --tmpfs /tmp <image>
# サイズや権限のオプション付き
docker run --tmpfs /tmp:rw,size=64m,mode=1777 <image>
3-2. --mount type=tmpfs(明示的な書き方・推奨)
docker run --mount type=tmpfs,destination=/tmp,tmpfs-size=64m <image>
💡 スクリプトでは
どちらも動きは同じですが、
--mount 推奨どちらも動きは同じですが、
--mount は key=value 形式で意図が明示され、スペースミスが起きにくく、CI/CD 向き。短いコマンドでは --tmpfs が楽です。
4. ハンズオン:tmpfs に書いたファイルは再起動で消える
# tmpfs を /mytmp に作って ubuntu 起動
$ docker run -it --name tmpfs-demo --tmpfs /mytmp:size=32m ubuntu bash
# tmpfs としてマウントされているか確認
root@xxx:/# mount | grep mytmp
tmpfs on /mytmp type tmpfs (rw,nosuid,nodev,noexec,relatime,size=32768k,...)
# ファイル作成
root@xxx:/# echo "秘密" > /mytmp/secret.txt
root@xxx:/# cat /mytmp/secret.txt
秘密
# コンテナから抜ける
root@xxx:/# exit
# 再起動して確認
$ docker start -ai tmpfs-demo
root@xxx:/# ls /mytmp/
(空 — tmpfs は再起動で消える)
✅ 挙動確認
コンテナ停止→再起動で tmpfs の中身は空に戻ります(メモリが一度解放されるため)。つまり「コンテナを起動している間だけ存在する一時領域」になります。
コンテナ停止→再起動で tmpfs の中身は空に戻ります(メモリが一度解放されるため)。つまり「コンテナを起動している間だけ存在する一時領域」になります。
5. サイズと権限のオプション
オプション(--tmpfs 側) |
意味 | デフォルト |
|---|---|---|
size=64m |
最大容量(超えると書込失敗) | ホストのRAM次第(実質無制限) |
mode=1777 |
パーミッション(8進数・/tmp相当の stickyビット付き) |
1777 |
rw / ro |
読み書き / 読み取り専用 | rw |
uid= / gid= |
所有 UID / GID | 0(root) |
# 非rootユーザーで書き込みさせたい場合
docker run --tmpfs /cache:rw,size=128m,uid=1000,gid=1000 myapp
⚠️ サイズは必ず指定する(本番)
size を指定しないと、理論上ホストのRAM全部まで tmpfs が肥大化できてしまいます。悪意ある/暴走プロセスにメモリを食い尽くされるリスク回避のため、本番では必ず
size を指定しないと、理論上ホストのRAM全部まで tmpfs が肥大化できてしまいます。悪意ある/暴走プロセスにメモリを食い尽くされるリスク回避のため、本番では必ず
size=... を付けましょう。
6. Linux限定という制約
tmpfs はLinuxカーネル機能なので、ホストが Linux のときだけ使えます。
| 環境 | tmpfs 使える? | 補足 |
|---|---|---|
| Linux(直接) | ✅ OK | ホストOSの機能をそのまま利用 |
| WSL2(Docker Desktop) | ✅ OK | WSL2 の Linuxカーネル上で動くため |
| macOS(Docker Desktop) | ✅ OK | Docker Desktop の軽量Linux VM内で動く |
| Windows Containers | ❌ NG | Windowsネイティブコンテナは対象外(通常は Linux Container モード) |
7. 3方式の総まとめ(Named / Bind / tmpfs)
第4章で学んできた3つのマウント方式を、一覧で総まとめします。
| 観点 | Named Volume(4-2) | Bind Mount(4-3) | tmpfs(4-4) |
|---|---|---|---|
| 保存場所 | Docker管理領域 | ホスト任意パス | RAM |
| 永続性 | ◎ コンテナ削除後も残る | ◎ ホストに残る | × 再起動で消える |
| 速度 | ○(ネイティブ) | △〜○(OS依存) | ◎◎ RAM速度 |
| ホストから編集 | × 触らない前提 | ○ 普段のエディタで | × そもそも触れない |
| クロスプラットフォーム | ◎ | △(Win/Mac は遅い) | △(Linux限定) |
| 主な用途 | DB・本番永続データ | 開発ソース・設定ファイル | 機密・キャッシュ・一時領域 |
書式(-v代替) |
-v name:/path |
-v /host:/path |
--tmpfs /path |
💡 併用もよくある
たとえばセキュアなWebアプリなら、ソースは bind mount で開発、DBは named volume で永続化、セッション管理の一時ファイルは tmpfs、という風に3種類を適材適所で組み合わせます。
たとえばセキュアなWebアプリなら、ソースは bind mount で開発、DBは named volume で永続化、セッション管理の一時ファイルは tmpfs、という風に3種類を適材適所で組み合わせます。
8. まとめ
| 押さえどころ | 内容 |
|---|---|
| 正体 | Linuxカーネルの tmpfs(RAM上のファイルシステム) |
| 特徴 | 超高速・揮発性(再起動で消える) |
| 書式 | --tmpfs /path[:size=64m,mode=1777] または --mount type=tmpfs,... |
| 用途 | 機密情報・セッション・キャッシュ・読み取り専用コンテナの /tmp 開放 |
| 必須設定 | 本番では size= を必ず指定(メモリ枯渇防止) |
| 対応OS | Linuxコンテナのみ(WSL2/macOS/LinuxはOK、Windowsネイティブ×) |
✅ 次のステップ
4-5 ボリュームのバックアップとリストアで、本章のクロージング。Named Volume に溜まった大事なデータを
4-5 ボリュームのバックアップとリストアで、本章のクロージング。Named Volume に溜まった大事なデータを
tar.gz で安全に退避・復元する手順を学びます。事故に備える最後の1ピースです。
参考リンク
- tmpfs mounts(Docker公式) — tmpfs マウントの一次情報源。オプション・制約の正式解説。
- Linux Kernel: tmpfs — tmpfs そのものの仕様。Dockerの前に存在するLinux標準機能。



コメント