わからないなりに理解したい Podman ③ ~ 可搬性とは?

★★★ 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 サポート担当 山本 です。

今回はコンテナ最大の強みの一つと言われる、”可搬性”…要は「別の環境にコンテナって単位で簡単に移せますよ」なところの手段のうち一例を、少しやってみたいと思います。
ここで紹介するのは、ファイルを介した方法です。

■コンテナの状態をコンテナイメージに反映する

コンテナを別の環境に移す場合、以前少しお話しした “コンテナイメージ” の形で移します。
実行中のコンテナで行なった変更はコンテナの元になったコンテナイメージには直接は反映されないため、コンテナイメージ側に変更を反映する手順が必要です。

今回はまず、実行中のコンテナを元にコンテナイメージを作成する方法を見ていきます。
(前回紹介した ContainerFile と “podman build” コマンドを使うと ContainerFile の内容に応じたコンテナイメージができるため、ここの手順の代わりにそちらの方法を使用しても問題ありません。)

■実験用のコンテナを作る

今回のテスト用に、quay.io の httpd コンテナイメージをベースに適当なコンテンツを追加したコンテナを作ります。
以前も案内している手順なので細かい説明は省きます。

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

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

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

ここまでは問題ありませんね。
この記事ではこの「test_content.html」があることを確認基準として使います。

■実行中のコンテナを元にしたコンテナイメージを作成する

先ほどのコンテナをコンテナイメージにしてみましょう。
必要なコマンドは以下です。

早速実行…する前に、
“podman images” コマンドで現在保存されているコンテナイメージの一覧を確認しておきます。
合わせて、”podman ps” コマンドで実行中のコンテナの情報も確認しておきましょう。

では改めて “podman commit” コマンドを実行してみましょう。
コンテナ名は先の手順でつけた「test-container-base」を指定。コンテナイメージには今回は「localhost/test_image」という名前を付けてみます。

その後、再度 “podman images” コマンドで保存されているコンテナイメージを確認してみると、指定したとおり「localhost/test_image」という名前の新しいコンテナイメージができているはずです。

新しくできたコンテナイメージ「localhost/test_image」を元に新しくコンテナを作成してみると、確かに最初から元のコンテナで作成した “test_content.html” が存在しており、コンテナの情報をコンテナイメージに保存できていることが確認できます。

■コンテナイメージをファイルに書き出してみる

続いて、コンテナイメージをファイルに書き出します
これもコマンド一つで OK です。

例えば、イメージ「localhost/test_image」を「test_image.tar」に書き出すなら以下のように実行します。

このように、指定した名前のファイルに書き出すことができます。

■別環境でコンテナイメージをファイルから復元してみる

最後に、先の手順で作成したファイルからコンテナイメージが読み込めることを確認します。
読み込みも以下のようなコマンド一つで行うことができます。

確認用にもう一つテスト環境を作成し、その環境に何らかの方法…例えば scp コマンドなどで、作成したファイル「test_image.tar」を転送します。

ここから先の手順は新しく作成した、もう片方のテスト環境で行ないます。
とりあえずファイルの転送ができていることを確認し、合わせて podman のインストールがまだなら、インストールもしましょう。

コンテナイメージの読み込み前に、この環境に保存されているコンテナイメージを確認しておきます。
今回は新しく作った環境なので、保存されたコンテナイメージはありません。

“podman load” コマンドでファイルからコンテナイメージを読み込んでみます

その後、改めてコンテナイメージを確認してみると…

ちゃんとファイルに保存した「localhost/test_image」が読み込めていることが確認できると思います。
勿論、このコンテナイメージから作成されたコンテナには、最初から「test_content.html」があることも確認できるはずです。

■最後に

今回はファイルを介してコンテナイメージを別の環境へ移す方法について見てきました。
これもまた簡単にできることをなんとなく感じられたかと思います。

このように、かなり手軽に別環境へ “コンテナ” を移せることこそがコンテナ最大の強みの一つと言われますが、逆に見れば「単一の環境だけで動かしていれば問題ないしバックアップなども不要」と言い切れるのであれば、コンテナの可搬性についての利便性はあまり実感できないかもしれません。

このコンテナの可搬性を活用するメリットとして考えられることは、わかりやすそうなところでは…
例えば、コンテナという単位でアプリケーションなどを別環境へ移せるため、移行する必要のあるファイルを探したりする手間がなく、必要ファイルの移し忘れでうまく動かない…という事態を避けやすいことが考えられるでしょうか。
また、以前少しお話ししたとおりコンテナは隔離空間なので、移行先の環境に影響を受けにくいことも考えられます。

今回とは別の方法でのコンテナの移行手段については、また別の機会があれば紹介したいと思います。

(他の回)
わからないなりに理解したい 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.


*