このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:Docker Composeでホストのファイルをコンテナにコピーする方法

Docker Composeでホストのファイルをコンテナにコピーする方法
Docker Composeを使ってコンテナを管理していると、ホスト側で作成したHTMLや画像などのファイルを、コンテナ内にコピーして反映させたい場面があります。
ここでは、docker compose cp コマンドを使って、ホスト上のファイルをコンテナ内にコピーする方法を、実際の操作例とともにわかりやすく解説していきます。

作業前のクリーンアップ
まずは環境をリセットして、不要なコンテナやイメージを削除しておきましょう。
これを行っておくことで、検証作業がスムーズになります。
💡実行コマンド
docker system prune -aこのコマンドは以下のオブジェクトをまとめて削除します。
| 削除対象 | 説明 |
|---|---|
| 停止中のコンテナ | 動作していないコンテナを削除します。 |
| 未使用のネットワーク | どのコンテナにも紐づいていないネットワークを削除します。 |
| 参照されていないイメージ | 現在のコンテナで使用されていないDockerイメージを削除します。 |
| ビルドキャッシュ | 不要なキャッシュデータを削除します。 |
実行中に次のメッセージが出たら、「y」 と入力して進めましょう。
PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y作業ディレクトリの移動
今回は、前回の記事「Docker Composeでコンテナ内のファイルをホストにコピーする方法」で作業した desktop/docker/apache ディレクトリを使います。
cd desktop/docker/apache実行結果
PS C:\Users\joeac> cd desktop/docker/apache
PS C:\Users\joeac\Desktop\docker\apache>Webコンテンツの準備
ここでは、ホスト上でWebページ用のHTMLと画像ファイルを準備して、それをコンテナへコピーします。
🐋 画像ファイルの用意
まず、クジラのアイコン画像をダウンロードして「whale.png」という名前に変更します。
この画像を apache ディレクトリに保存しておきましょう。

以下のリンクからダウンロードします。
📝 index.html の作成
次に、VS CodeなどでHTMLファイルを作成します。
code index.htmlエディタが開いたら、以下の内容を入力して保存します。
<HTML>
<BODY>
<H1>Development environment</H1>
<BR>
<IMG src="whale.png">
</BODY>
</HTML>「index.html」を表示する
保存後に、ブラウザで「index.html」をダブルクリックして開き、正しく表示されるか確認します。
画面に「Development environment」とクジラの画像が表示されればOKです。

ファイル構成の確認
作成したファイルが正しく配置されているか確認します。
ls実行結果
PS C:\Users\joeac\Desktop\docker\apache> ls
Directory: C:\Users\joeac\Desktop\docker\apache
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2025/10/05 3:54 87 compose.yaml
-a--- 2025/10/06 22:29 89 index.html
-a--- 2025/09/27 22:16 7792 whale.pngコマンドでコンテナを作成・実行する
compose.yaml を使ってApacheコンテナを動かしてみましょう。
実行するコマンドは次の通りです👇
docker compose up -dこのコマンドは、compose.yaml があるディレクトリで実行します。
コマンドの意味とオプション解説
| コマンド | 説明 |
|---|---|
| docker compose up | compose.yamlの内容をもとにコンテナを作成・起動する。 |
| -d | 「detached(デタッチド)」モードで実行。バックグラウンドで動作し、ターミナルをブロックしない。 |
実行結果
PS C:\Users\joeac\Desktop\docker\apache> docker compose up -d
(省略)
[+] Running 7/7
✔ apache Pulled 7.9s
✔ fbb3c2cad9f8 Pull complete 0.5s
✔ af3b83c443ec Pull complete 0.7s
✔ 4f4fb700ef54 Pull complete 0.3s
✔ 6c19a85825c3 Pull complete 3.6s
✔ 8c7716127147 Pull complete 3.4s
✔ 12844f4198f6 Pull complete 3.9s
[+] Running 2/2
✔ Network apache_default Created 0.1s
✔ Container apache-apache-1 Started 0.8s
PS C:\Users\joeac\Desktop\docker\apache>このように表示されれば成功です!
コンテナへのファイルコピー
それでは、ホスト上のファイルをコンテナへコピーしてみましょう。
ここでは、docker compose cp コマンドを使用します。

📘コマンド書式
docker compose cp <ホストのファイルパス> <サービス名>:<コンテナ内のパス>例えば、以下のように実行します:
docker compose cp ./index.html apache:/usr/local/apache2/htdocs
docker compose cp ./whale.png apache:/usr/local/apache2/htdocs実行結果の例:
PS C:\Users\joeac\Desktop\docker\apache> docker compose cp ./index.html apache:/usr/local/apache2/htdocs
(省略)
[+] Copying 1/0
✔ apache-apache-1 copy ./index.html to apache-apache-1:/usr/local/apache2/htdocs Copied
PS C:\Users\joeac\Desktop\docker\apache> docker compose cp ./whale.png apache:/usr/local/apache2/htdocs
(省略)
[+] Copying 1/0
✔ apache-apache-1 copy ./whale.png to apache-apache-1:/usr/local/apache2/htdocs Copied💡コマンド解説表
| 要素 | 説明 |
|---|---|
| docker compose cp | ホストとコンテナ間でファイルをコピーするコマンド。 |
| ./index.html | ホスト側でコピーするファイルのパス。ここではカレントディレクトリの index.html。 |
| apache | compose.yamlで定義されたサービス名(コンテナ名ではない点に注意)。 |
| /usr/local/apache2/htdocs | コンテナ内のコピー先ディレクトリ。Apacheのドキュメントルート。 |
Webブラウザで確認
コピーが完了したら、ブラウザで確認してみましょう。
URLバーに以下を入力します。
localhostこれで、コンテナ内のApacheが提供するWebページが表示され、
先ほど作成した index.html と whale.png が表示されていれば成功です。

注意点:コンテナ削除時のデータ
ここで重要なのが、コンテナ削除時のデータ消失です。
Dockerコンテナは基本的に「使い捨て」が前提なので、削除すると中のファイルもすべて消えます。
| 状況 | 結果 |
|---|---|
| コンテナを停止 | ファイルは残る。 |
| コンテナを削除 | ファイルは消える(再作成時は空状態) |
そのため、もしファイルを永続的に保持したい場合は、
- コンテナ削除前に docker compose cp でホストにバックアップ
- または Docker Volume を使って永続化
といった対策を行いましょう。
まとめ
Docker Composeを使えば、ホスト上で編集したファイルをコンテナへ簡単に反映できます。
ポイントをおさらいすると
- docker compose cp コマンドでファイルをコンテナにコピーできる。
- サービス名を指定してコピー先を明確にできる。
- コンテナ削除時はファイルが消えるので、必要なら永続化対策を行う。
この方法を覚えておくと、Web開発やテスト環境の反映作業が格段に効率化します。
ぜひ試してみてください! 🚀
