このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】コンテナ内のファイルをホストにコピーする
コンテナ内のファイルをホストにコピーします。
「Docker Composeを使ってみる①」の操作を既に行っていることを前提としています。
ディレクトリの移動
Docker Composeでコンテナを作成するには、「compose.yaml」ファイルが必要になります。
デフォルトでは、カレントディレクトリにある「compose.yaml」ファイルが読み込まれるため、「compose.yaml」ファイルを保存している「desktop/docker/apache」ディレクトリに移動しておきます。
・「cd desktop/docker/apache」コマンドを実行します。
PS C:\Users\joeac> cd desktop/docker/apache
PS C:\Users\joeac\Desktop\docker\apache>
コンテナの作成と実行
「compose.yaml」ファイルの内容は次のように定義しています。
・「cat compose.yaml」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\apache> cat compose.yaml
version: '3'
services:
apache:
image: httpd:2.4
ports:
- "80:80"
・「docker compose up -d」コマンドを実行します。
このコマンドは、「compose.yaml」ファイルを配置した場所で実行する必要があります。
PS C:\Users\joeac\Desktop\docker\apache> docker compose up -d
[+] Running 7/7
✔ apache 6 layers [⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 7.1s
✔ 8a1e25ce7c4f Pull complete 1.3s
✔ 8b0a7c8478f8 Pull complete 0.8s
✔ 4f4fb700ef54 Pull complete 0.7s
✔ 7f8fb0a042e0 Pull complete 1.5s
✔ 91e4b2f2b52a Pull complete 2.0s
✔ c78cdbf9617d Pull complete 3.2s
[+] Building 0.0s (0/0) docker:default
[+] Running 2/2
✔ Network apache_default Created 0.0s
✔ Container apache-apache-1 Started 0.1s
コンテナからホストへファイルをコピー
コンテナ内にある「index.html」ファイルをホストへコピーします。
【構文】docker compose cp <サービス名>:<コンテナ内のファイルパス> <ホストのファイルパス>
・「docker compose cp apache:/usr/local/apache2/htdocs/index.html .
」コマンドを実行します。
このコマンドは、Docker Composeで起動したコンテナ(apache)内の /usr/local/apache2/htdocs/index.html ファイルを、ホストマシンのカレントディレクトリにコピーします。コマンドの後ろにカレントディレクトリを表す「.」があるので注意してください。
要素 | 説明 |
---|---|
docker compose cp | Docker Composeでコンテナからホストマシンにファイルをコピーするコマンド。 |
apache:/usr/local/apache2/htdocs/index.html | コピー元のファイルが存在するサービス名(コンテナ名)「apache」とファイルパス(/usr/local/apache2/htdocs/index.html)。 |
. | コピー先のディレクトリ。ここでは現在のディレクトリ(カレントディレクトリ)を指定している。 |
PS C:\Users\joeac\Desktop\docker\apache> docker compose cp apache:/usr/local/apache2/htdocs/index.html .
[+] Copying 1/0
✔ apache-apache-1 copy apache-apache-1:/usr/local/apache2/htdocs/index.html to . Copied 0.0s
PS C:\Users\joeac\Desktop\docker\apache>
ホストへコピーした「index.html」ファイルの中身を確認します。
・「cat index.html」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\apache> cat index.html
<html><body><h1>It works!</h1></body></html>
引き続き「ホスト内のファイルをコンテナにコピーする」では、ホスト内にあるファイルをコンテナにコピーしていきます。