Podman と Skopeo によるコンテナ管理

Red Hat Enterprise LinuxBeginner
オンラインで実践に進む

はじめに

Red Hat Enterprise Linux (RHEL) を扱うシステム管理者にとって、コンテナ化されたアプリケーションの管理は不可欠なスキルです。このチャレンジでは、コマンドラインツールの podmanskopeo を使用して、基本的なコンテナ管理タスクを実行します。パブリックレジストリからのイメージのプル、コンテナとしての実行、構成の検査、およびローカルレジストリへのイメージのコピーを実践します。

コンテナイメージのプルと実行

最初のタスクは、パブリックレジストリからコンテナイメージをダウンロードし、ローカルシステムで実行することです。コンテナの機能をデモンストレーションするためによく使われる nginx ウェブサーバーイメージを使用します。

タスク

  • podman コマンドを使用して、docker.io レジストリから最新の nginx コンテナイメージをプルしてください。
  • nginx イメージからコンテナを実行し、正常に動作していることを確認してください。

要件

  • コンテナ名は my-nginx としてください。
  • コンテナはバックグラウンド(デタッチモード)で実行してください。
  • コンテナのポート 80 を、ローカルマシンのポート 8080 にマッピングしてください。

コンテナの起動に成功したら、アクセスを確認できます。curl コマンドを実行すると、デフォルトの Nginx 歓迎ページが返されるはずです。

$ curl http://localhost:8080

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
</html>
✨ 解答を確認して練習

コンテナの検査

コンテナを実行した後、その構成、ネットワーク設定、マウントされたボリュームなどの詳細情報を取得する必要があることがよくあります。podman inspect コマンドを使用すると、これらの情報を構造化された JSON 形式で取得できます。

タスク

  • 実行中の my-nginx コンテナを検査してください。
  • 検査結果の出力をファイルにリダイレクトしてください。

要件

  • podman inspect コマンドを使用して、my-nginx コンテナの詳細を取得してください。
  • JSON 出力を ~/project/containers/ ディレクトリ内の nginx-inspect.json という名前のファイルに保存してください。

nginx-inspect.json ファイルには、コンテナのすべての構成詳細を含む大きな JSON 配列が格納されます。catless コマンドで内容を確認できます。

$ cat ~/project/containers/nginx-inspect.json
[
    {
        "Id": "a933dd...c8e",
        "Created": "2023-10-27T10:30:00.123456789Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
...
✨ 解答を確認して練習

Skopeo によるコンテナイメージのコピー

skopeo は、パブリックレジストリ、ローカルストレージ、プライベートレジストリなど、異なる種類のストレージ間でコンテナイメージを移動するための強力なツールです。このステップでは、nginx イメージをマシン上で動作しているローカルコンテナレジストリにコピーします。

デフォルトでは、Podman と Skopeo は安全でない(HTTP)レジストリへのイメージのプッシュを許可しません。まず、最新の v2 レジストリ構成形式を使用して、ローカルレジストリを信頼するようにシステムを構成する必要があります。

タスク

  • localhost:5000 にある安全でないローカルレジストリへのイメージのプッシュを許可するようにシステムを構成してください。
  • skopeo を使用して、nginx:latest イメージを docker.io からローカルレジストリにコピーしてください。
  • ローカルレジストリから Podman のローカルストレージにイメージをプルして、コピーが成功したことを確認してください。

要件

  • /etc/containers/registries.conf ファイルを編集し、v2 形式を使用して localhost:5000 を安全でないレジストリ(insecure registry)として構成してください。これには sudo 権限が必要です。
  • skopeo copy を使用して docker.io/library/nginx:latest イメージをコピーしてください。
  • ローカルレジストリ内でのイメージのコピー先は localhost:5000/my-local-nginx:latest としてください。
  • コピー後、podman pull を使用して localhost:5000/my-local-nginx:latest を取得してください。
✨ 解答を確認して練習

まとめ

このチャレンジでは、Red Hat Enterprise Linux システムでコンテナを管理するための必須スキルを学びました。podman を使用してイメージをプルし、ポートマッピングを伴う名前付きコンテナとして実行し、その詳細な構成を検査することに成功しました。さらに、実務で重要なタスクである、安全でないレジストリの構成と、skopeo を使用したパブリックソースからプライベートなローカルレジストリへのイメージのコピーを実践しました。これらのコマンドは、現代のコンテナ化された環境で作業するシステム管理者にとって基本的なツールです。