Podmanでローカルイメージリポジトリを設定する方法 - TechRepublic

Podmanでローカルイメージリポジトリを設定する方法 - TechRepublic

Podmanは、RHEL/CentOSのDockerランタイムエンジンの代替です。RHEL/CentOSユーザーの方は、このコンテナツールに慣れておくことをお勧めします。これらのディストリビューションでDockerを使うのはますます難しくなっているからです。

PodmanはDockerの優れた代替品なので、導入を迷う必要はありません。Podmanには、便利な機能がいくつかあります。その一つが、ローカルリポジトリを素早く作成できることです。これらのリポジトリは(その名の通り)ローカル専用です。つまり、自分の開発作業にのみ使用します。チームで共有するわけではないので、一体何の役に立つのかと疑問に思うかもしれません。しかし、ローカルリポジトリは、他の人が自分の作業にアクセスできないようにテストを行うのに最適な方法です。

このようなリポジトリがあれば、イメージをプッシュしたりプルしたりして、最適な状態になるまで作業を続けることができます。イメージが希望どおりに仕上がったことを確認したら、チームリポジトリまたはパブリックリポジトリにプッシュできます。

それがあなたの希望やニーズに合うと思われる場合は、実現させましょう。

参照: IT データセンターのグリーンエネルギーポリシー(TechRepublic Premium)

必要なもの

この作業をするために必要なのは、PodmanがインストールされたRed Hat Enterprise LinuxまたはCentOS 8のインスタンスだけです。また、rootユーザーアカウントまたはsudo権限を持つユーザーアカウントへのアクセス権も必要です。

注:安全でないレジストリを作成しています。そのため、使用するサーバーが適切に保護されていることを確認してください。安全なレジストリとLet's Encryptを使用することで、この動作を実現することも可能です。もちろん、この場合、サーバーにドメインが関連付けられている必要があります。ここでは、レジストリが社内テスト目的のみで使用されることを前提としています。そのため、安全でないという点が挙げられます。

ただし、安全なレジストリを作成するための追加手順についても説明します。

ローカルレジストリを作成する方法

まず最初に、ローカルレジストリを定義する必要があります。そのためには、以下のコマンドでコンテナデータを格納するディレクトリを作成する必要があります。

sudo mkdir -p /var/lib/registry

次に、次のコマンドを使用してローカル レジストリを展開する必要があります。

sudo podman run --privileged -d --name registry -p 5000:5000 -v /var/lib/registry:/var/lib/registry --restart=always registry:2

次に、安全でないレジストリを定義する必要があります。そのためには、次のコマンドで必要な設定ファイルを開きます。

sudo nano /etc/containers/registries.conf

そのファイル内の[registries.insecure]ブロックを探してください。そのセクションに次の行があります。

registries = []

上記の行を次のように変更します。

registries = ['localhost:5000']

ファイルを保存して閉じます。次のコマンドでPodmanを再起動します。

sudo systemctl restart podman

ローカルレジストリにイメージをプッシュする方法

ローカルレジストリが起動したら、イメージをプッシュしてみましょう。テストとして、公式docker.ioリポジトリからhello-worldイメージを取得し、新しいローカルリポジトリにプッシュします。

まず、次のコマンドで hello-world イメージをプルダウンします。

podman pull hello-world

プルが完了したら、ローカルリポジトリにプッシュできるようにイメージにタグを付ける必要があります。以下のコマンドでイメージにタグを付けます。

podman tag docker.io/library/hello-world localhost:5000/hello-world

イメージにタグが付けられたので、次のコマンドでローカル リポジトリにプッシュできます。

podman push localhost:5000/hello-world

イメージがローカル リポジトリにプッシュされたことを確認するには、次のコマンドを発行します。

podman images

localhost:5000 に hello-world イメージがリストされているはずです (図 A )。

図A

hello-world イメージがローカル リポジトリに正常にプッシュされました。

これを例として、独自のイメージにタグを付けてローカル リポジトリにプッシュする方法が説明されます。

Let's Encryptでローカルリポジトリを作成する方法

SSL を使用してローカル リポジトリを設定する場合は、次の追加手順を実行する必要があります。

まず、上記と同じようにレジストリデータ用のディレクトリを作成します。次に、Let's Encrypt SSL証明書を取得するために使用するcertbot-autoツールをインストールする必要があります。以下のコマンドでインストールしてください。

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo firewall-cmd --add-service https --permanent
sudo firewall-cmd --reload

次のコマンドで SSL 証明書をダウンロードします。

export DOMAIN="YOURDOMAIN"
export EMAIL="YOUREMAIL"
sudo /usr/local/bin/certbot-auto --standalone certonly -d $DOMAIN --preferred-challenges http --agree-tos -n -m $EMAIL --keep-until-expiring

ここで、YOURDOMAIN はサーバーに関連付けられたドメインであり、YOUREMAIL はドメインに関連付けられた電子メール アドレスです。

次のコマンドを発行して、証明書を自動更新する conjob を作成します。

crontab -e

次の内容をファイルの下部に貼り付けます。

00 3 * * * /usr/local/bin/certbot-auto renew --quiet

次に、次のコマンドを使用して、安全なコンテナ レジストリをデプロイする必要があります。

export REG_DOMAIN="YOURDOMAIN"
podman run --privileged -d --name registry -p 5000:5000 -v /var/lib/registry:/var/lib/registry -v /etc/letsencrypt/live/${REG_DOMAIN}/fullchain.pem:/certs/fullchain.pem -v /etc/letsencrypt/live/${REG_DOMAIN}/privkey.pem:/certs/privkey.pem -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem -e REGISTRY_HTTP_TLS_KEY=/certs/privkey.pem registry:2

ここで、YOURDOMAIN はサーバーに関連付けられたドメインです。

最後に、registries.conf ファイルを編集して、SSL 対応レジストリを追加します。ファイルを開き、[registries.insecure] エントリを以下のように編集します。

registries = ['localhost:5000', 'YOURDOMAIN:5000']

ここで、YOURDOMAIN はサーバーに関連付けられたドメインです。

ファイルを保存して閉じます。次のコマンドでPodmanを再起動します。

sudo systemctl restart podman

これで完了です。ローカルレジストリが使えるようになりました。レジストリ間でイメージをプッシュしたりプルしたりして、お楽しみください。

Jack Wallen によるビジネス プロフェッショナル向けの最新のテクノロジー アドバイスをすべて知るには、YouTube で TechRepublic の How To Make Tech Work を購読してください。


画像: Getty Images/iStockphoto
Tagged: