2.2. イメージの調査

podman images を使用すると、ローカルシステムにどのイメージを取得したかを確認できます。イメージに関連するメタデータを表示するには podman inspect を使用します。

2.2.1. イメージの一覧表示

ローカルシステムに取得した、利用可能イメージを確認するには、以下のコマンドを実行します。

# podman images
REPOSITORY                               TAG      IMAGE ID     CREATED      VIRTUAL SIZE
registry.redhat.io/rhel8/support-tools   latest   b3d6ce4e0043 2 days ago   234MB
registry.redhat.io/ubi8/ubi-init         latest   779a05997856 2 days ago   225MB
registry.redhat.io/ubi8/ubi              latest   a80dad1c1953 3 days ago   210MB

2.2.2. ローカルイメージの検証

ローカルシステムにイメージを取得した後、イメージを実行する前に、そのイメージを調べることが推奨されます。イメージを実行する前に調査する理由としては、以下が挙げられます。

  • イメージの役割の理解
  • イメージに含まれるソフトウェアの確認

podman inspect コマンドは、イメージの動作に関する基本的な情報を表示します。また、ホストシステムにイメージをマウントするオプションや、ホストからのツールを使用してイメージの内容を調べるオプションもあります。以下は、コンテナーイメージを実行する前に、そのコンテナーを調べる例です。

  1. イメージの検証 - podman inspect を実行して、コンテナーイメージを実行する際に実行したコマンドや、その他の情報を確認します。以下は、ubi8/ubi および rhel8/rsyslog のコンテナーイメージを調べる例です (一部の情報だけを抜粋しました)。

    # podman pull registry.redhat.io/ubi8/ubi
    # podman inspect registry.redhat.io/ubi8/ubi | less
    ...
       "Cmd": [
           "/bin/bash"
       ],
       "Labels": {
           "License": "GPLv3",
           "architecture": "x86_64",
           "authoritative-source-url": "registry.redhat.io",
           "build-date": "2018-10-24T16:46:08.916139",
           "com.redhat.build-host": "cpt-0009.osbs.prod.upshift.rdu2.redhat.com",
           "com.redhat.component": "rhel-server-container",
           "description": "The Red Hat Enterprise Linux Base image is designed to be a fully supported...
    ...
    # podman pull registry.redhat.io/rhel8/rsyslog
    # podman inspect registry.redhat.io/rhel8/rsyslog
       "Cmd": [
         "/bin/rsyslog.sh"
       ],
       "Labels": {
         "License": "GPLv3",
         "architecture": "x86_64",
    ...
         "install": "podman run --rm --privileged -v /:/host -e HOST=/host -e IMAGE=IMAGE -e NAME=NAME IMAGE /bin/install.sh",
    ...
         "run": "podman run -d --privileged --name NAME --net=host --pid=host -v /etc/pki/rsyslog:/etc/pki/rsyslog -v /etc/rsyslog.conf:/etc/rsyslog.conf -v /etc/sysconfig/rsyslog:/etc/sysconfig/rsyslog -v /etc/rsyslog.d:/etc/rsyslog.d -v /var/log:/var/log -v /var/lib/rsyslog:/var/lib/rsyslog -v /run:/run -v /etc/machine-id:/etc/machine-id -v /etc/localtime:/etc/localtime -e IMAGE=IMAGE -e NAME=NAME --restart=always IMAGE /bin/rsyslog.sh",
         "summary": "A containerized version of the rsyslog utility
    ...

    ubi8/ubi コンテナーは、podman run で起動した時に他の引数を指定していなければ、bash シェルを実行します。エントリーポイントが設定された場合は、Cmd 値の代わりにその値が使用されます (また、Entriespoint コマンドの引数として Cmd の値が使用されます)。

    2 番目の例では、rhel8/rsyslog コンテナーイメージには、組み込みの install ラベルおよび run ラベルがあります。このラベルは、コンテナーがシステムに設定 (install) され、どのように実行されるか (run) を示します。

  2. コンテナーのマウント - その内容をさらに調べるには、podman コマンドを使用して、アクティブなコンテナーをマウントします。この例では、rsyslog コンテナーを実行し、実行中の rsyslog コンテナーの一覧を表示して、そのファイルシステムの内容を調べるマウントポイントを表示します。

    # podman run -d registry.redhat.io/rhel8/rsyslog
    # podman ps
    CONTAINER ID IMAGE             COMMAND         CREATED        STATUS      PORTS NAMES
    1cc92aea398d ...rsyslog:latest /bin/rsyslog.sh 37 minutes ago Up 1 day ago      myrsyslog
    # podman mount 1cc92aea398d
    /var/lib/containers/storage/overlay/65881e78.../merged
    # ls /var/lib/containers/storage/overlay/65881e78*/merged
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

    podman mount を行うと、ホストに一覧表示したディレクトリーから、コンテナーのコンテンツにアクセスできます。ls を使用して、イメージの内容を調べます。

  3. イメージのパッケージ一覧の確認 - コンテナーにインストールされているパッケージを確認するには、rpm コマンドで、コンテナーのマウントポイントにインストールされているパッケージを調べます。

    # rpm -qa --root=/var/lib/containers/storage/overlay/65881e78.../merged
    redhat-release-server-7.6-4.el7.x86_64
    filesystem-3.2-25.el7.x86_64
    basesystem-10.0-7.el7.noarch
    ncurses-base-5.9-14.20130511.el7_4.noarch
    glibc-common-2.17-260.el7.x86_64
    nspr-4.19.0-1.el7_5.x86_64
    libstdc++-4.8.5-36.el7.x86_64

2.2.3. リモートイメージの検証

お使いのシステムに取得する前にコンテナイメージを検証する場合は、skopeo inspect コマンドを使用できます。skopeo inspect で、リモートコンテナーレジストリーにあるイメージに関する情報を表示できます。

次のコマンドは、Red Hat レジストリーから、ubi8-init イメージを検証します。

# skopeo inspect docker://registry.redhat.io/ubi8/ubi8-init
{
    "Name": "registry.redhat.io/ubi8/ubi8-init",
    "Digest": "sha256:53dfe24...",
    "RepoTags": [
        "8.0.0-9",
        "8.0.0",
        "latest"
    ],
    "Created": "2019-05-13T20:50:11.437931Z",
    "DockerVersion": "1.13.1",
    "Labels": {
        "architecture": "x86_64",
        "authoritative-source-url": "registry.access.redhat.com",
        "build-date": "2019-05-13T20:49:44.207967",
        "com.redhat.build-host": "cpt-0013.osbs.prod.upshift.rdu2.redhat.com",
        "com.redhat.component": "ubi8-init-container",
        "description": "The Red Hat Enterprise Linux Init image is designed to be...