ローカルファイルをコンテナにコピーする
このステップでは、ローカルファイルシステムから実行中の Docker コンテナへファイルをコピーする方法を学びます。これは、コンテナ起動後に設定ファイルやスクリプト、その他のデータを追加する必要がある場合によく行われる作業です。
まず、~/project
ディレクトリ内に簡単なテキストファイルをローカルマシン上に作成しましょう。
echo "This is a test file." > ~/project/test_file.txt
このコマンドは、~/project
ディレクトリにtest_file.txt
というファイルを作成し、「This is a test file.」というテキストを書き込みます。
次に、ファイルをコピーする対象となる実行中のコンテナが必要です。ここではシンプルなubuntu
イメージを使用します。イメージがローカルに存在しない可能性があるため、まずはプルします。
docker pull ubuntu:latest
このコマンドは、Docker Hub からubuntu
イメージの最新版をダウンロードします。
では、ubuntu
イメージを基にコンテナを実行しましょう。デタッチモード (-d
) で実行し、識別しやすいように名前 (my_ubuntu_container
) を付けます。
docker run -d --name my_ubuntu_container ubuntu:latest sleep infinity
このコマンドは、ubuntu:latest
イメージを使用してmy_ubuntu_container
という名前の新しいコンテナを起動します。sleep infinity
コマンドにより、コンテナは無期限に実行され続けます(デモンストレーション目的に便利です)。
docker ps
コマンドを使用して、コンテナが実行中であることを確認できます。
docker ps
出力にmy_ubuntu_container
が表示されるはずです。
これで、docker cp
コマンドを使用してローカルマシンからtest_file.txt
を実行中のコンテナにコピーできます。構文はdocker cp <local_path> <container_name>:<container_path>
です。
docker cp ~/project/test_file.txt my_ubuntu_container:/tmp/
このコマンドは、~/project/test_file.txt
ファイルをmy_ubuntu_container
内の/tmp/
ディレクトリにコピーします。
ファイルが正常にコピーされたことを確認するには、docker exec
を使用してコンテナ内でコマンドを実行します。コンテナの/tmp/
ディレクトリ内のファイルをリスト表示するためにls
を使用します。
docker exec my_ubuntu_container ls /tmp/
出力にtest_file.txt
が表示されれば、ファイルが正常にコピーされたことが確認できます。
最後に、作成したコンテナをクリーンアップしましょう。
docker stop my_ubuntu_container
docker rm my_ubuntu_container
これらのコマンドは、それぞれコンテナを停止し、削除します。