はじめに
Red Hat Enterprise Linux (RHEL) を扱うシステム管理者にとって、コンテナ化されたアプリケーションの管理は不可欠なスキルです。このチャレンジでは、コマンドラインツールの podman と skopeo を使用して、基本的なコンテナ管理タスクを実行します。パブリックレジストリからのイメージのプル、コンテナとしての実行、構成の検査、およびローカルレジストリへのイメージのコピーを実践します。
コンテナイメージのプルと実行
最初のタスクは、パブリックレジストリからコンテナイメージをダウンロードし、ローカルシステムで実行することです。コンテナの機能をデモンストレーションするためによく使われる 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 配列が格納されます。cat や less コマンドで内容を確認できます。
$ 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 を使用したパブリックソースからプライベートなローカルレジストリへのイメージのコピーを実践しました。これらのコマンドは、現代のコンテナ化された環境で作業するシステム管理者にとって基本的なツールです。



