はじめに
この実験では、docker image tag コマンドを使用して Docker イメージのエイリアスを効果的に管理する方法を学びます。まず、特定のイメージバージョンを識別および特定するために不可欠な Docker イメージ参照の構造とコンポーネントを理解します。
イメージ参照の基本的な理解に続き、さまざまな方法でイメージにタグを付ける実践的な経験を積みます。具体的には、イメージの ID で、既存の名前で、名前とタグの組み合わせでタグ付けを行います。最後に、プライベート Docker レジストリで使用するためにイメージに特定のタグを付ける方法を学び、カスタムの場所からイメージをプッシュおよびプルできるようになります。
Docker イメージ参照を理解する
このステップでは、Docker イメージ参照について学びます。Docker イメージ参照は、特定のバージョンの Docker イメージを指す名前です。コンテナを実行するときや、その他のイメージ関連の操作を行うときに、どのイメージを使用するかを Docker に指示するために使用されます。
完全なイメージ参照は通常、いくつかの部分で構成されます。
[registry_hostname[:port]/]image_name[:tag]
これらの部分を分解してみましょう。
registry_hostname[:port]: これは、イメージが保存されている Docker レジストリのホスト名と、オプションのポートです。この部分が省略された場合、Docker はデフォルトで Docker Hub (docker.io) を使用します。image_name: これはイメージの名前です。名前空間を含むことができます (例:library/ubuntuやmyuser/myapp)。Docker Hub 上の公式イメージに名前空間が指定されていない場合、library/名前空間が暗黙的に使用されます (例:ubuntuはlibrary/ubuntuと同じです)。tag: これは、イメージの特定のバージョンまたはバリアントを指定するオプションのタグです。タグが指定されていない場合、Docker はデフォルトでlatestタグを使用します。
いくつかの例を見てみましょう。
ubuntu: これは、Docker Hub 上の公式ubuntuイメージのlatestタグを指します。ubuntu:20.04: これは、Docker Hub 上の公式ubuntuイメージの20.04タグを指します。myuser/myapp: これは、Docker Hub 上のmyuserリポジトリ内のmyappイメージのlatestタグを指します。myuser/myapp:v1.0: これは、Docker Hub 上のmyuserリポジトリ内のmyappイメージのv1.0タグを指します。myregistry.example.com:5000/myuser/myapp:v1.0: これは、ポート5000のmyregistry.example.comにあるプライベートレジストリ上のmyuserリポジトリ内のmyappイメージのv1.0タグを指します。
イメージ参照が実際にどのように機能するかを確認するために、参照を使用してイメージをプルしてみましょう。Docker インストールのテストに使用される非常に小さいイメージである hello-world イメージをプルします。
docker pull hello-world
Docker がイメージをプルしていることを示す出力が表示されるはずです。
Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
このコマンドは、Docker Hub から hello-world イメージの latest タグをプルしました。出力には、完全な参照 docker.io/library/hello-world:latest が確認できます。
次に、ダウンロードしたイメージを一覧表示してみましょう。
docker images
hello-world イメージが一覧に表示されるはずです。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest <image_id> <created_time> <size>
出力には、イメージの REPOSITORY (イメージ名)、TAG、IMAGE ID、CREATED 時間、および SIZE が表示されます。IMAGE ID は、イメージコンテンツの一意の識別子です。
イメージ参照を理解することは、Docker を使用する上で重要です。これにより、使用するイメージを正確に指定することができます。
イメージの ID を使用してイメージにタグを付ける
このステップでは、イメージ ID を使用して Docker イメージにタグを付ける方法を学びます。イメージにタグを付けることで、新しい名前やタグを付与することができ、同じイメージコンテンツを指す新しい参照を作成できます。これは、エイリアスの作成、バージョニング、または別のレジストリにプッシュするためのイメージの準備に役立ちます。
イメージにタグを付ける基本的なコマンドは docker tag です。構文は次の通りです。
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
ソースイメージは、イメージ ID、名前、または名前とタグの組み合わせを使用して指定できます。このステップでは、イメージ ID を使用します。
まず、前のステップでプルした hello-world イメージのイメージ ID を取得するために、再度イメージを一覧表示しましょう。
docker images
出力から hello-world イメージを見つけ、その IMAGE ID をメモします。これは 16 進数の文字列になります。例えば、bf756fb1cdb1 のようなものです。イメージ ID の最初の数文字だけを使用すればよく、ただしそれが自分のイメージの中で一意である必要があります。
では、イメージ ID を使用して hello-world イメージにタグを付けましょう。新しい名前 my-hello-world とタグ v1.0 を付けます。<image_id> を docker images の出力からメモした実際のイメージ ID に置き換えてください。
docker tag < image_id > my-hello-world:v1.0
コマンドが成功すると、出力は表示されません。
では、新しいタグを確認するために、再度イメージを一覧表示しましょう。
docker images
これで、リポジトリが my-hello-world でタグが v1.0 の新しいエントリが表示されるはずです。元の hello-world イメージと同じ IMAGE ID であることに注意してください。これは、新しいタグが同じイメージコンテンツを指す単なるポインタであることを確認しています。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest <image_id> <created_time> <size>
my-hello-world v1.0 <image_id> <created_time> <size>
イメージ ID を使用してイメージにタグを付けることに成功しました。これは、Docker イメージを管理する上で基本的な操作です。
イメージ名を使用してイメージにタグを付ける
このステップでは、イメージ名を使用して Docker イメージにタグを付ける方法を学びます。これは、タグ付けの際にイメージを参照するもう 1 つの一般的な方法です。タグを指定せずにイメージ名のみを使用する場合、Docker は latest タグのイメージを参照していると見なします。
イメージ名を使用してタグ付けする構文は前と同じです。
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
今回は、SOURCE_IMAGE はイメージ名になります。再び hello-world イメージを使用します。ソースにタグを指定していないため、Docker は hello-world:latest を使用します。
hello-world イメージに新しい名前 another-hello-world とタグ v2.0 を付けましょう。
docker tag hello-world another-hello-world:v2.0
再び、コマンドが成功すると出力は表示されません。
では、新しいタグを確認するためにイメージを一覧表示しましょう。
docker images
これで、リポジトリが another-hello-world でタグが v2.0 の新しいエントリが表示されるはずです。前のステップと同様に、この新しいタグも元の hello-world イメージと同じ IMAGE ID を指しています。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest <image_id> <created_time> <size>
my-hello-world v1.0 <image_id> <created_time> <size>
another-hello-world v2.0 <image_id> <created_time> <size>
イメージ名を使用してイメージにタグを付けることに成功しました。これは、イメージの latest バージョンに新しいタグを作成する便利な方法です。
イメージ名とタグを使用してイメージにタグを付ける
このステップでは、イメージ名とタグを使用して Docker イメージにタグを付ける方法を学びます。これは、タグ付けの際に特定のバージョンのイメージを参照する最も具体的な方法です。
構文は同じです。
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
今回は、SOURCE_IMAGE を名前とタグの両方で指定します。前のステップで作成した my-hello-world:v1.0 イメージを使用します。
my-hello-world:v1.0 イメージに新しい名前 yet-another-hello-world とタグ release を付けましょう。
docker tag my-hello-world:v1.0 yet-another-hello-world:release
コマンドが成功すると、出力は表示されません。
では、新しいタグを確認するためにイメージを一覧表示しましょう。
docker images
これで、リポジトリが yet-another-hello-world でタグが release の新しいエントリが表示されるはずです。この新しいタグも、元の hello-world イメージや他に作成したタグと同じ IMAGE ID を指しています。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest <image_id> <created_time> <size>
my-hello-world v1.0 <image_id> <created_time> <size>
another-hello-world v2.0 <image_id> <created_time> <size>
yet-another-hello-world release <image_id> <created_time> <size>
イメージ名とタグを使用してイメージにタグを付けることに成功しました。この方法は、既存の特定のタグ付きバージョンのイメージに基づいて新しいタグを作成したい場合に便利です。
プライベートレジストリ用にイメージにタグを付ける
このステップでは、Docker イメージをプライベートレジストリにプッシュできるようにタグ付けする方法を学びます。プライベートレジストリ用にイメージにタグを付ける場合、ターゲットイメージの参照にレジストリのホスト名と任意のポートを含める必要があります。
タグ付けの構文は次の通りです。
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
TARGET_IMAGE には、レジストリ情報が含まれます。
[registry_hostname[:port]/]image_name[:tag]
myregistry.example.com のポート 5000 で動作しているプライベートレジストリがあるとしましょう。hello-world イメージ(latest タグを使用)にタグを付けて、この仮想のレジストリにプッシュできるように準備します。名前を my-hello-world、タグを prod とします。
docker tag hello-world:latest myregistry.example.com:5000/my-hello-world:prod
コマンドが成功すると、出力は表示されません。
では、レジストリ名付きの新しいタグを確認するためにイメージを一覧表示しましょう。
docker images
これで、リポジトリが myregistry.example.com:5000/my-hello-world でタグが prod の新しいエントリが表示されるはずです。このタグも、元の hello-world イメージと同じ IMAGE ID を指しています。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest <image_id> <created_time> <size>
my-hello-world v1.0 <image_id> <created_time> <size>
another-hello-world v2.0 <image_id> <created_time> <size>
yet-another-hello-world release <image_id> <created_time> <size>
myregistry.example.com:5000/my-hello-world prod <image_id> <created_time> <size>
プライベートレジストリのホスト名とポートを含む参照でイメージにタグを付けることに成功しました。これは、docker push コマンドを使用してイメージをそのレジストリにプッシュする前に必要なステップです。
まとめ
この実験では、Docker イメージの参照について学び、オプションのレジストリホスト名、イメージ名、タグを含む構造を理解しました。これらの参照が、Docker レジストリから特定のイメージバージョンを一意に識別して取得するためにどのように使用されるかを見ました。
次に、docker image tag コマンドを使用して既存のイメージにエイリアスを作成する方法を調べました。イメージの ID、既存の名前、既存の名前とタグの組み合わせを使用してイメージにタグを付ける練習を行いました。最後に、プライベートレジストリのホスト名を含む参照でイメージにタグを付け、カスタムレジストリにプッシュできるように準備する方法を学びました。



