バインドマウントとtmpfsマウント
ホストのファイルにアクセスするバインドマウントと、一時データを保存するtmpfsマウントについて学びます。
「バインドマウントとtmpfsマウント」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
ボリューム以外のデータストレージ
これまでのレッスンでは、永続データの保存に使用する Docker ボリュームについて学びました。しかし、ホストマシンからファイルを直接共有したい場合や、永続化する必要のない一時データを保存したい場合はどうすればよいでしょうか。
このレッスンでは、データを管理するさらに2つの方法、バインドマウントと tmpfs マウントを紹介します。これらは用途に応じた柔軟な選択肢を提供します。

バインドマウントとは
バインドマウントを使うと、ホストマシン上のファイルやディレクトリをコンテナにマウントできます。これにより直接的なリンクが作成され、一方で行った変更がもう一方にもすぐに反映されます。
- ホストパス:コンピューター上の場所です。
- コンテナパス:コンテナ内の場所です。
- 開発、設定の共有、ホスト上のファイルへのアクセスに適しています。
バインドマウントを使ってみる
バインドマウントを実際に使ってみましょう。このコマンドは、現在のディレクトリ(Linux/macOS では $(pwd)、Windows CMD では %cd% で表します)をコンテナの /app ディレクトリにマウントします。
注:実行する前に、現在のディレクトリに hello.txt という名前のファイルを作成し、"Hello from host!" のようなテキストを入力してください。
docker run --rm -it \
-v "$(pwd):/app" \
alpine:latest sh -c "ls /app && cat /app/hello.txt"読み取り専用のバインドマウント
ホストのデータを共有しつつ、コンテナによる変更を防ぎたい場合があります。そのようなときに便利なのが 読み取り専用のバインドマウントです。
マウントパスの末尾に :ro を指定するか、readonly とともに --mount フラグを使用すると、読み取り専用にできます。
docker run --rm -it \
-v "$(pwd):/app:ro" \
alpine:latest sh -c "touch /app/new_file.txt || echo 'Permission denied!'"読み取り専用の出力を理解する
前のコマンドを実行すると、"Permission denied!" というメッセージが表示されたはずです。これは、/app ディレクトリが読み取り専用でマウントされているため、コンテナが新しいファイルを作成できなかったことを示しています。
これは、コンテナによるホストファイルへの意図しない変更や悪意のある変更からファイルを保護する、優れたセキュリティ機能です。
tmpfs マウントとは
tmpfs マウントは、ホストのメモリ(RAM)だけに保存される一時ファイルシステムです。そのため、tmpfs マウントに書き込んだデータは永続化されません。
- コンテナを停止するとデータは失われます。
- ディスクベースのストレージより I/O が高速です。
- 機密データや一時ファイルに適しています。
tmpfs マウントを使ってみる
tmpfs マウントを使用してコンテナを作成しましょう。そこにファイルを書き込んでからコンテナを終了します。新しいコンテナを実行すると、そのファイルはなくなっています。
--tmpfs フラグで、コンテナ内のマウントポイントを指定します。
docker run --rm -it \
--tmpfs /app/temp_data \
alpine:latest sh -c "echo 'Ephemeral data' > /app/temp_data/my_temp_file.txt && ls /app/temp_data"tmpfs の一時性を確認する
前のコマンドを実行すると、my_temp_file.txt が一覧に表示されました。次に、このコマンドを実行して、同じ tmpfs マウント設定で*新しい*コンテナを起動してください。
my_temp_file.txt がもう存在しないことがわかります。これにより、tmpfs のデータが実際に一時的なものであり、コンテナのライフサイクルに固有であることを確認できます。
docker run --rm -it \
--tmpfs /app/temp_data \
alpine:latest ls /app/temp_dataバインドマウントと tmpfs マウントの比較
それぞれ、いつ使うべきでしょうか。
- バインドマウント:ホストのファイル(設定やソースコードなど)をコンテナと共有する場合に使用します。データを永続化でき、ホストから直接アクセスできます。
- tmpfs マウント:高いパフォーマンスが必要な一時的で永続化しないデータや、コンテナの再起動後に残すべきでないデータ(キャッシュや実行時の機密データなど)に使用します。
どちらも Docker ボリュームを補完し、幅広いデータ管理の選択肢を提供します。
クイックチェック:マウントの種類
バインドマウントと tmpfs マウントについて、次のうち正しい説明はどれでしょうか。
まとめ:データ管理ツール
すばらしいです。Docker のデータ管理ツールをさらに使いこなせるようになりました。
- バインドマウントはホストのファイルやディレクトリをコンテナにリンクし、開発や設定の共有に適しています。
- tmpfs マウントはメモリ上の一時ストレージを提供し、永続化しないデータや機密データに最適です。
これらの選択肢を理解すると、コンテナ化したアプリケーションに適したストレージソリューションを選べるようになります。
よくある質問
「バインドマウントとtmpfsマウント」レッスンは無料ですか?
はい。「バインドマウントとtmpfsマウント」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「バインドマウントとtmpfsマウント」で何を学びますか?
ホストのファイルにアクセスするバインドマウントと、一時データを保存するtmpfsマウントについて学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「バインドマウントとtmpfsマウント」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- コンテナネットワークの基礎
- 永続化のためのDockerボリューム
- バインドマウントとtmpfsマウント
- カスタムブリッジネットワークとサービスディスカバリ