📁

DockerイメージからGitリポジトリをクローンし,ファイルを取り出す

に公開

はじめに

こんにちは!駆け出しエンジニアcrocoです。

今回は、Docker Hubに公開されているイメージを使って、コンテナ内でGitHubリポジトリをクローンし、そのファイルをMac本体に取り出すまでの手順を解説します。

過去の自分が見返した時に、すぐに再現できるように書いたので、初学者の方にも役立つと思います!

🎯 この記事のゴール

  • Docker HubからDockerイメージを取得する
  • コンテナを起動して、中に入る
  • コンテナ内でGitHubリポジトリをクローンする
  • コンテナからホストPC(Mac)にファイルをコピーする

📋 前提条件

  • Dockerがインストールされている
  • Docker Desktopが起動している
  • GitHubのSSHキーが設定済み

※ GitHubのSSHキー設定は以下の記事をご覧ください。
https://zenn.dev/croco_82/articles/5c87311d568826

🚀 手順

1. Dockerイメージを取得する

まず、Docker Hubから指定されたイメージを取得します。

docker pull your-username/your-image:latest

2. コンテナを起動する

取得したイメージからコンテナを作成し、起動します。

docker run -it -w /workspace --name my-container your-username/your-image:latest /bin/bash

📘 コマンドの解説

  • -it:インタラクティブモード(対話的にコンテナを操作できる)
  • -w /workspace:作業ディレクトリを/workspaceに設定
  • --name my-container:コンテナに名前をつける
  • /bin/bash:bashシェルで起動

コマンド実行後、プロンプトがroot@169bb170f9ac:/workspace#のような表示になれば、コンテナ内に入っています。

3. GitHubリポジトリをクローンする

コンテナ内で、GitHubリポジトリをクローンします。

git clone git@github.com:your-username/your-repo.git

クローンが完了したら、ディレクトリに移動して、ファイルを確認しましょう。

cd your-repo
ls -la

出力に、your-repoディレクトリに含まれるファイルが表示されます。

4. コンテナからホストPCへファイルを取り出す

ここが重要なポイントです!

コンテナ内で作業したファイルは、コンテナを削除すると消えてしまいます。そのため、Mac本体にファイルをコピーする必要があります

🔧 手順

4-1. 新しいターミナルを開く

コンテナに入っているターミナルはそのままにして、新しいターミナルのウィンドウまたはタブを開きます

4-2. デスクトップにコピー先のフォルダを作成する

新しいターミナルで、以下のコマンドを実行します。

mkdir ~/Desktop/my-project

4-3. docker cpコマンドでファイルをコピーする

引き続き、新しいターミナルで以下のコマンドを実行します。

docker cp my-container:/workspace/your-repo ~/Desktop/my-project

Successfully copiedと表示されれば成功です!

デスクトップのmy-projectフォルダを開いて、ファイルが入っていることを確認しましょう。

📘 コマンドの解説

  • docker cp:Dockerのコピーコマンド
  • my-container:コピー元のコンテナ名
  • :/workspace/your-repo:コンテナ内のコピーしたいフォルダのパス
  • ~/Desktop/my-project:Mac本体のコピー先のパス

5. コンテナを終了・停止・削除する

作業が終わったら、コンテナを終了します。

コンテナから退出

コンテナに入っているターミナルで、以下のコマンドを実行します。

exit

コンテナを停止

docker stop my-container

コンテナを削除(任意)

Docker Desktopに残っているコンテナを削除したい場合は、以下を実行します。

docker rm my-container

🤔 疑問:docker cp-vオプションの違いは?

docker cp - ファイルコピー(一回限り)

  • コンテナとホスト間で一度限りのファイルコピーを行う
  • コンテナ実行中でも後から実行できる
  • 一方向のコピーのため、コピー後に一方を変更しても他方には反映されない
  • 既に稼働中のコンテナからファイルを取り出すのに便利

-vオプション - ボリュームマウント(リアルタイム共有)

  • コンテナ起動時に指定する必要がある
  • ホストとコンテナ間でディレクトリをリアルタイムに共有する
  • 片方で変更すると、即時に両方に反映される
  • 開発作業などで継続的なファイル編集が必要な場合に便利

🎉 まとめ

今回は、Dockerイメージからコンテナを起動し、GitHubリポジトリをクローンして、ファイルをホストPCに取り出すまでの一連の流れを解説しました。

ポイント

  • Docker Desktopが起動していることを確認する
  • コンテナからファイルを取り出すにはdocker cpコマンドを使う
  • リアルタイムでファイル共有したい場合は-vオプションを使う

この記事が、過去の自分や同じように悩んでいる初学者の方の役に立てば嬉しいです!

Discussion