docker image import コマンドでイメージを作成する方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、docker image importコマンドを使用してさまざまなソースから Docker イメージを作成する方法を学びます。リモート URL から直接イメージをインポートする方法、標準入力を使用してローカルの tarball からインポートする方法、コミットメッセージ付きでローカルの tarball からインポートする方法、新しい設定を含むローカルディレクトリからインポートする方法について探求します。

ハンズオン演習を通じて、docker image importコマンドのさまざまなオプションを実際に使用する経験を積み、インポートされたイメージを検証する方法を理解します。この実験では、既存の tarball やディレクトリから効率的に Docker イメージを作成するスキルを身につけ、Docker ワークフローにおける柔軟性を提供します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/ImageOperationsGroup -.-> docker/load("Load Image") subgraph Lab Skills docker/run -.-> lab-555154{{"docker image import コマンドでイメージを作成する方法"}} docker/ls -.-> lab-555154{{"docker image import コマンドでイメージを作成する方法"}} docker/images -.-> lab-555154{{"docker image import コマンドでイメージを作成する方法"}} docker/load -.-> lab-555154{{"docker image import コマンドでイメージを作成する方法"}} end

リモート URL からイメージをインポートする

このステップでは、リモート URL から直接 Docker イメージをインポートする方法を学びます。これは、Web サーバー上にホストされているイメージ tarball を手動でダウンロードせずに Docker 環境にロードしたい場合に便利です。

まず、curlコマンドを使用してリモート URL からサンプルのイメージ tarball をダウンロードします。デモンストレーション用に公開されているイメージ tarball を使用します。

curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar

このコマンドは、指定された URL からイメージ tarball をダウンロードし、~/projectディレクトリにalpine.tarとして保存します。-oフラグは出力ファイル名と場所を指定します。

次に、docker image importコマンドを使用してこの tarball を Docker 環境にインポートします。importコマンドは URL またはファイルパスを入力として受け取ることができます。URL を使用する場合、Docker は直接コンテンツをダウンロードしてインポートします。

docker image import https://labex.io/images/alpine.tar

このコマンドはリモート URL からイメージをインポートします。Docker は tarball をダウンロードし、その内容から新しいイメージを作成します。デフォルトでは、インポートされたイメージにはリポジトリやタグは付きません。

イメージがインポートされたことを確認するには、docker imagesコマンドを使用して利用可能なイメージを一覧表示します。

docker images

REPOSITORYTAGの両方が<none>で、最近のCREATED時間を持つイメージが表示されるはずです。これが先ほどインポートしたイメージです。

また、インポートプロセス中にイメージにリポジトリとタグを付けることもできます。これは URL の後に目的のリポジトリとタグを追加することで行います。

docker image import https://labex.io/images/alpine.tar alpine:latest

このコマンドは同じイメージをインポートしますが、alpine:latestとしてタグ付けします。

再度イメージを一覧表示して、新しくタグ付けされたイメージを確認します。

docker images

これで、リポジトリalpineとタグlatestを持つイメージが表示されるはずです。

STDIN を使用してローカル tarball からイメージをインポートする

前のステップでは、リモート URL から Docker イメージをインポートする方法を学びました。このステップでは、標準入力 (STDIN) を使用してローカルの tarball ファイルから Docker イメージをインポートする方法を学びます。この方法は、ローカルにイメージ tarball があり、その内容を直接docker image importコマンドにパイプしたい場合に便利です。

まず、前のステップで~/projectディレクトリにalpine.tarファイルがあることを確認してください。ない場合は、再度curlを使用してダウンロードできます:

curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar

次に、catコマンドを使用してalpine.tarファイルの内容を読み取り、docker image importコマンドにパイプします。docker image import-引数は、STDIN から読み取るように指示します。

cat ~/project/alpine.tar | docker image import -

このコマンドはalpine.tarファイルを読み取り、その内容をdocker image importコマンドに入力として送信します。Docker は受信したデータからイメージをインポートします。タグを指定せずに URL からインポートする場合と同様に、インポートされたイメージにはデフォルトでリポジトリやタグが付きません。

イメージがインポートされたことを確認するには、利用可能なイメージを一覧表示します:

docker images

REPOSITORYTAG<none>の別のイメージが表示されるはずです。

STDIN からインポートする際にもリポジトリとタグを指定できます。構文は URL からインポートする場合と似ています。

cat ~/project/alpine.tar | docker image import - alpine:stdin

このコマンドは STDIN からイメージをインポートし、alpine:stdinとしてタグ付けします。

新しいタグを確認するため、再度イメージを一覧表示します:

docker images

これで、リポジトリalpineとタグstdinを持つイメージが表示されるはずです。

STDIN を使用する方法は、特にコマンドを連結する場合や、解凍とインポートを一気に行う圧縮 tarball を扱う場合など、柔軟なイメージインポート方法です。

コミットメッセージ付きでローカル tarball からイメージをインポートする

前のステップでは、URL と STDIN からイメージをインポートしました。このステップでは、ローカルの tarball ファイルからイメージをインポートし、インポートプロセス中にコミットメッセージを追加する方法を学びます。コミットメッセージを追加することで、インポートしたイメージの出所や目的を文書化するのに役立ちます。

まず、~/projectディレクトリにalpine.tarファイルがあることを確認してください。ない場合はダウンロードします:

curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar

次に、docker image importコマンドに-mフラグを付けてコミットメッセージを追加します。また、ソースとしてローカルファイルパスを指定します。

docker image import -m "Imported alpine base image" ~/project/alpine.tar alpine:commit

このコマンドでは:

  • -m "Imported alpine base image" がイメージの履歴に指定したコミットメッセージを追加します
  • ~/project/alpine.tar はローカルの tarball ファイルへのパスです
  • alpine:commit はインポートするイメージに付けたいリポジトリ名とタグです

コマンドを実行すると、Docker はローカルの tarball からイメージをインポートし、コミットメッセージを適用します。

インポートとコミットメッセージを確認するには、docker image historyコマンドでイメージを検査します。

docker image history alpine:commit

このコマンドはalpine:commitイメージの履歴を表示します。COMMENT列に「Imported alpine base image」というコミットメッセージが表示されるはずです。

新しいタグを確認するためにイメージを一覧表示することもできます:

docker images

リポジトリalpineとタグcommitを持つイメージが表示されるはずです。

コミットメッセージを追加することは、特に外部ソースからインポートする場合に、Docker イメージの変更や出所を追跡するための良い習慣です。

新しい設定を適用してローカルディレクトリからイメージをインポートする

前のステップでは、tarball ファイルからイメージをインポートしました。このステップでは、ローカルディレクトリからイメージをインポートし、インポートプロセス中に新しい設定を適用する方法を学びます。これは、ディレクトリ内にファイルシステムスナップショットがあり、実行するコマンドなどの特定の設定で Docker イメージに変換したい場合に便利です。

まず、イメージに含める簡単なディレクトリ構造とファイルを作成しましょう。

mkdir ~/project/myimage
echo "Hello, Docker!" > ~/project/myimage/hello.txt

これにより、~/projectディレクトリ内にmyimageというディレクトリが作成され、その中に「Hello, Docker!」というテキストを含むhello.txtファイルが作成されます。

次に、docker image importコマンドを使用して~/project/myimageディレクトリの内容をインポートします。また、-cフラグを使用してイメージの設定変更を指定します。この例では、このイメージからコンテナを起動したときに実行するデフォルトコマンドを定義するCMD命令を設定します。

docker image import -c 'CMD ["/bin/cat", "/hello.txt"]' ~/project/myimage myimage:latest

このコマンドでは:

  • -c 'CMD ["/bin/cat", "/hello.txt"]' がイメージのデフォルトコマンドを/bin/cat /hello.txtに設定します。-cフラグでは、CMDENTRYPOINTENVEXPOSELABELONBUILDSTOPSIGNALUSERWORKDIRなどの Dockerfile 命令を適用できます
  • ~/project/myimage はファイルシステムの内容を含むローカルディレクトリのパスです
  • myimage:latest はインポートするイメージに付けたいリポジトリ名とタグです

コマンドを実行すると、Docker は~/project/myimageディレクトリの内容に基づいて新しいイメージを作成し、指定されたCMD設定を適用します。

インポートと設定を確認するには、イメージを一覧表示します:

docker images

リポジトリmyimageとタグlatestを持つイメージが表示されるはずです。

それでは、このイメージからコンテナを実行してCMD命令が正しく適用されているか確認しましょう。

docker run myimage:latest

このコマンドはmyimage:latestイメージからコンテナを起動します。CMD/bin/cat /hello.txtに設定したため、コンテナはこのコマンドを実行し、hello.txtファイルの内容である「Hello, Docker!」を表示するはずです。

ターミナルに「Hello, Docker!」と表示されれば、ディレクトリの内容がインポートされ、CMD設定が正常に適用されたことが確認できます。

まとめ

この実験では、さまざまなソースから Docker イメージを作成するためにdocker image importコマンドを使用する方法を学びました。まず、リモート URL から直接イメージをインポートし、手動でダウンロードすることなくオンラインでホストされているイメージ tarball を読み込む方法を実演しました。これには、サンプルの tarball をダウンロードするためにcurlを使用し、その後 URL を入力としてdocker image importコマンドを使用して、リポジトリとタグを指定する場合としない場合のインポート方法を示しました。

提供された内容には完全には詳細が記載されていませんが、その後のステップでは、STDIN を使用してローカルの tarball ファイルからイメージをインポートしたり、より良い追跡のためにコミットメッセージ付きでインポートしたり、新しい設定を適用しながらローカルディレクトリからインポートしたりする内容が含まれている可能性があります。これらのステップは、Docker イメージの作成と管理のためのdocker image importコマンドの柔軟性とさまざまなユースケースをさらに説明するものです。