わからないなりに理解したい Podman ⑤ ~ レジストリと TAG

★★★ Live配信告知 ★★★
◆◇世界一わかりみの深いクラウドネイティブ on Azure◆◇
6/22(金) 12:00~ 第14回:世界一わかりみの深いAzure Bot Service 〜AIによるFAQチャットボット構築〜
今回はAzure Cognitive Service for LanguageというAzureのAIサービスを用いて、FAQチャットボットの構築方法についてわかりみ深く説明します。
◆◇PS Live配信◆◇
5/20(金) 17:00~ アウトプットはイイぞ 〜人生折り返し地点からの情報発信で学びが楽しくなった話〜
2020年にMicrosoft MVP for Azure を受賞した武井が人生を変えたアウトプットについてそのノウハウをお伝えします。

こんにちは。サイオステクノロジー OSS サポート担当 山本 です。

今回は podman の 2つの “tag” について見ていきます。
前回のレジストリに関連する要素で、覚えておくとコンテナを使ったアプリケーション開発などに役立つはずです。

■実験用のコンテナイメージの作成

今回もレジストリを使用します。
レジストリの準備方法については少し長いので、前回の記事を参照してください。
今回の記事は前回の続きとして操作することを前提とします。

■実験用のコンテナイメージを作る

例によって、quay.io の httpd コンテナイメージをベースにテスト用のコンテナとコンテナイメージを作っていきます。
以前も案内している手順なので細かい説明は省きます。

コンテナを「tag-test-base」という名前を付けて起動して

コンテナの内部でコマンドを実行して適当にコンテンツを作って

作成した「test_content.html」が curl で見れるかを確認します。

ここで一旦、”podman commit” と “podman push” で作成したコンテナをコンテナイメージに保存し、レジストリにアップロードします。
レジストリに保存するコンテナイメージは「(レジストリのホスト名):(ポート番号)」で始まる名前にすることと、レジストリにログインすることは前回お話ししたとおりです。
今回のコンテナイメージ名は「(ホスト名):5000/test/tag-test」にしてみます。

ここまでは以前と同じ内容です。

■”podman tag” を使って別名のコンテナイメージを保存する

ではタグを使う…前に、コンテナイメージの内容が変わっていなければ違いを確認できないので、先のコンテナ「tag-test-base」の内容を少し変更しておきます。
確認用に作った「test_content.html」の内容を変更し、「test_content_1.html」を追加で作ります。
作ったら “podman commit” でコンテナイメージに変更を反映します。(ここでは “podman push” はしません)

それでは “podman tag” コマンドでコンテナイメージにタグをつけてみます。
“podman tag” コマンドの使い方は以下のような形です。

これを使って、先に保存したコンテナイメージ「(ホスト名):5000/test/tag-test」に新しく「(ホスト名):5000/test/tag-test:1111」という名前をつけてみます。

上記のように “podman tag” を実行した後、”podman images” でローカルのコンテナイメージを確認すると、保存したはずの名前「(ホスト名):5000/test/tag-test:1111」ではなく、以下のように「TAG」だけ異なる同名イメージがある状態になっているはずです。

このようにコンテナイメージ名の末尾に「:(TAG名)」をつけることで、コンテナイメージの「TAG」を変更することができます。
“podman push” で TAG を変更したコンテナイメージをアップロードする場合も、コンテナイメージ名の末尾に「:(TAG名)」をつければ OK です。試しにアップロードしてみましょう。

なお、(レジストリ側の実装にもよりますが) 前回使ったレジストリ内のコンテナイメージ一覧を確認する以下のコマンドは TAG が表示されず、TAG の異なる同名コンテナイメージをアップロードしても一覧には追加されません

(こちらもレジストリ側の実装にもよりますが) そのコンテナイメージにどのような TAG があるのかは、”podman search –list-tags” コマンドで確認することができます。
これらの性質は、レジストリ内のコンテナイメージを整理するのに役立つでしょう。

■アップロードしたコンテナイメージを確認する

ここまでの手順でアップロードした2つの TAG の異なる同名コンテナイメージをダウンロード・実行する手順と、それぞれがアップロードしたとおりの内容になっているかを、別の環境を用意して確認してみましょう。

■TAG なしのコンテナイメージの確認

まずは最初にアップロードした、特に TAG を付けていないコンテナイメージをダウンロードします。
前回お話ししたとおり、”podman pull” でダウンロードしてから “podman run” を実行しましょう。

実行したら、作成・編集した各コンテンツの確認をしてみます。
こちらの TAG を付けていないほうをアップロードした時点では “test_content.html” は1行のみで、”test_content_1.html” は作成していませんでした。
それぞれのコンテンツを確認すると、”test_content.html” は1行のみで、”test_content_1.html” はエラーを返す、と確かに保存した時点の内容が表示されることが確認できるはずです。

■TAG を付けたほうのコンテナイメージの確認

続いて、TAG を設定してアップロードしたほうを確認してみます。

こちらも “podman pull” と “podman run” でダウンロード・実行を行いましょう。
TAG を設定したコンテナイメージのダウンロード・実行には、アップロードした際と同様にコンテナイメージ名の末尾に「:(TAG名)」をつければ OK です。
(あと、先に起動したコンテナとポートがかぶらないようにします。)

こちらの各コンテンツも確認してみると、TAG を付けていないコンテナイメージをアップロードしてから、TAG を付けたコンテナイメージを作成するまでの間に行なった変更が反映されていることが確認できるはずです。

このように、TAG の異なるコンテナイメージはそれぞれの内容を保持することができます

■”podman tag” コマンドを使わなくても…

「TAG」は “podman commit” でコンテナイメージを保存する時にもつけることができます
こちらも試してみましょう。

まずは後の確認のため、「tag-test-base」の内容を更に少し変更します。
確認用に作った「test_content.html」の内容を変更し、「test_content_2.html」を追加で作ります。

そうしたらそのまま “podman commit” をします。ここでコンテナイメージ名の末尾に「:(TAG名)」をつけるのを忘れずに
今回は「(ホスト名):5000/test/tag-test:2222」としてみましょう。

“podman images” でローカルイメージを確認すると、きちんと TAG が 2222 の新しいイメージが追加されているはずです。

このイメージも “podman push” します。やり方は先と同じで、コンテナイメージ名の末尾に「:(TAG名)」をつけるようにします。

別環境からこの “tag-test:2222” を pull して実行・確認、あるいは “podman search –list-tags” でレジストリの保存内容を確認すると、この方法でもきちんと TAG を付けて保存できていることが確認できます。

■最後に

今回は “podman tag” コマンドとレジストリの TAG について見てみました。

試してみるとなんとなくわかるかと思いますが、最初にお話ししたとおりこれらは同じような名前ですが別物です。

“podman tag” コマンドはコンテナイメージに新しい名前をつけるのに使うコマンドで、
例えば “podman pull” コマンドでコンテナイメージをダウンロードした直後に、誤って名前を変えずにアップロードしてしまうことを避けるためなどに名前を変えてから運用したいという場合などに使えるかと思います。

対してレジストリの TAG はレジストリに保存するコンテナイメージの整理に一役買う機能で、
コンテナで開発したアプリケーションなどを複数バージョンにわたって纏めて管理したい場合などに使えるはずです。

これらの機能は、例えばコンテナを用いたアプリケーション開発などを行う際に非常に強力な武器となってくれるはずです。

余談ですが、前回の記事を見てもらえばわかるかと思いますが、(レジストリの設定次第ではありますが) 基本的に同名・同一 TAG のコンテナイメージを “podman push” すると、その名前・TAG を持つコンテナイメージはレジストリ上で上書きされます
このため、TAG を活用する場合には予めきちんと TAG のネーミングポリシーなどを決めておきましょう。

(他の回)
わからないなりに理解したい Podman ① ~ 何をするもの?
わからないなりに理解したい Podman ② ~ コンテナを書き換える
わからないなりに理解したい Podman ③ ~ 可搬性とは?
わからないなりに理解したい Podman ④ ~ 可搬性とは?その2
(今回) わからないなりに理解したい Podman ⑤ ~ レジストリと TAG
わからないなりに理解したい Podman ⑥ ~ Pod って何だ?
わからないなりに理解したい Podman ⑦ ~ Pod の可搬性





ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

Be the first to comment

Leave a Reply

Your email address will not be published.


*