このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Docker基礎】バインドマウントする方法

バインドマウントする方法

 ファイルを頻繁に編集したい場合や、コンテナとホスト間で同じディレクトリを共有しながら作業したいときには、バインドマウントが便利です。
 バインドマウントとは、ホスト上の既存のフォルダ(ディレクトリ)をコンテナ内に“取り付ける”手法であり、ホスト側を自由に編集するとコンテナ内にも即時に反映されるのが特徴です。ここでは、Apache コンテナを使ってバインドマウントを体験してみましょう。

1.バインドマウントの流れ

  1. バインドマウント用のフォルダをホストに作成
  2. コンテナ起動時-v <ホスト側フォルダ>:<コンテナ内パス> を指定
  3. ホスト側フォルダにindex.htmlファイルを作成して、コンテナ内から参照
  4. ブラウザなどでコンテナ動作を確認
  5. 不要なコンテナを削除してクリーンアップ

2.実行環境とコンテナ情報

項目
コンテナ名apache-container
イメージ名httpd
ポート番号8080:80

マウント設定

項目
コンテナ内のパス(マウント先)/usr/local/apache2/htdocs
ホスト側のフォルダ(マウント元)html(今回は C:\Users\ユーザー名\Desktop\docker\html など)

3.バインドマウントの手順

STEP1:マウント用のフォルダを作成

作業ディレクトリへ移動
Windows の例:

PS C:\Users\joeac> cd C:\Users\joeac\Desktop\docker

ホスト側でフォルダ(html)を作る

PS C:\Users\joeac\Desktop\docker> mkdir html

これがコンテナの /usr/local/apache2/htdocs と紐づくディレクトリになります。

STEP2:docker run コマンドで Apache コンテナを起動

docker run --name apache-container -d -p 8080:80 -v .\html:/usr/local/apache2/htdocs httpd
  • --name apache-container : コンテナ名を apache-container に指定
  • -d : バックグラウンド実行
  • -p 8080:80 : ホストの 8080 ポートをコンテナの 80 番ポートにマッピング
  • -v .\html:/usr/local/apache2/htdocs : バインドマウントの設定(ホスト側 .\html → コンテナ内 /usr/local/apache2/htdocs

STEP3:ブラウザで初期ページを確認

  1. ブラウザで http://localhost:8080/ にアクセス
  2. 初期状態では “Index of /”Apache テストページ が表示される

4.ホスト側に index.html を作成

テキストエディタ./html/index.html を編集

マウントしたフォルダ/ディレクトリにindex.htmlを作成します。

PS C:\Users\joeac\Desktop\docker> code .\html\index.html

index.htmlの内容

<html>
<meta charset="utf-8"/>
<body>
<div>演習で学ぶDocker基礎</div>
</body>
</html>

保存(文字コードは UTF-8 推奨)

5.表示を確認

 再び http://localhost:8080/ をブラウザで開き、ページをリロードすると、今度は index.html の内容が表示されます。
 これで、ホスト側の html フォルダにファイルを置くだけで、コンテナ内で即時反映される仕組みが完成です。

6.後始末

確認できたら、コンテナを停止・削除しておきましょう。イメージはそのまま残しておきましょう。

docker stop apache-container
docker rm apache-container

ホスト側の html フォルダは必要に応じて削除してください。

まとめ

  1. バインドマウント
    ・ホスト上の任意フォルダやファイルをコンテナ内にマウント
    ・ホストで直接ファイルを編集可能
    ・OS のパス依存があるため、チームメンバーとの共有には注意
  2. 使い方
    docker run -v <ホスト側フォルダ>:<コンテナ内パス> の形で指定
    ・Apache などの Web サーバにコーディングファイルを置く場合に便利
  3. 注意
    ・OS ごとのパス書式に気をつける(Windows C:\Users...、Mac/Linux /home/... など)
    ・コンテナを壊してもデータはホスト側に残る

 次のコンテンツでは、ボリュームマウントの設定方法を解説します。バインドマウントと異なるメリットや運用パターンを併せて確認してみましょう。