GNU/Linux >> Linux の 問題 >  >> Rocky Linux

RockyLinux8でPodmanをインストールして使用してコンテナを実行する方法

Podmanは、Linux環境でコンテナーとポッドを開発、管理、およびデプロイするために構築された、無料のオープンソースコンテナープラットフォームです。 Redhatは2018年にPodmanを開発しました。これは、Dockerとは動作が異なるコンテナ化エンジンです。ポッドマンは、Docker CLIとDockerデーモンを使用するDockerとは異なり、動作するデーモンに依存しません。デーモンに依存していると、単一障害点になります。

Podmanは、Podmanがカーネル、コンテナー、およびイメージと直接対話できるようにするOCI(Open Container Initiative)標準に従って設計されています。また、rootアクセスを必要としないため、Dockerよりも安全です。どちらもOCIに準拠しているため、PodmanはDockerのドロップイン代替品として使用できます。

この記事では、Podmanをインストールし、それを使用してイメージとコンテナーを作成および管理する方法を説明します。

前提条件
  1. RockyLinuxベースのサーバー

  2. root権限を持つ非sudoユーザー。

  3. サーバーが更新されていることを確認します。

    $ sudo dnf update
    
ポッドマンをインストール

Podmanはcontainer-toolsに含まれています モジュール、BuildahおよびSkopeoとともに。 RockyLinux8のAppStreamリポジトリでも利用できます。モジュールメソッドを使用します。

dnf moduleを使用してPodmanをインストールします コマンド。

$ sudo dnf module install container-tools

Podmanのバージョンをチェックして、正しくインストールされているかどうかを確認してください。

$ podman --version
podman version 3.2.3
コンテナイメージの検索とダウンロード

Nginxの画像を検索するには、次のコマンドを使用します。

$ podman search nginx

出力には、イメージの元のレジストリの名前とイメージの説明が表示されます。

イメージをダウンロードするには、次のいずれかのコマンドを使用します。

$ podman pull docker.io/library/nginx

OR

$ podman pull nginx

ダウンロードした画像は、次のコマンドで表示できます。

$ podman images
REPOSITORY               TAG         IMAGE ID      CREATED     SIZE
docker.io/library/nginx  latest      f8f4ffc8092c  3 days ago  138 MB
コンテナの実行

次のコマンドを使用して、Nginxイメージを使用してコンテナーを実行します。コンテナにウェブサーバーという名前を付けました 。

$ podman run -d --name webserver nginx 

同じイメージを使用して、別の名前の別のコンテナを起動できます。

$ podman run -d --name webserver2 nginx

同じイメージを使用して、無制限の数のコンテナを起動できます。

コンテナの一覧表示と停止

実行中のすべてのコンテナを一覧表示するには、次のコマンドを使用します。

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS             PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  31 seconds ago  Up 31 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  2 seconds ago   Up 3 seconds ago               webserver2

実行中のコンテナを停止します。

$ podman stop webserver
webserver

停止したかどうかを確認します。

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED             STATUS                 PORTS       NAMES
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  About a minute ago  Up About a minute ago              webserver2

停止したコンテナを含むすべてのコンテナを一覧表示するには、-aを使用する必要があります フラグ。

$ podman ps -a
CONTAINER ID  IMAGE                           COMMAND               CREATED             STATUS                     PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  2 minutes ago       Exited (0) 35 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  About a minute ago  Up About a minute ago                  webserver2
停止したコンテナを開始します

次のコマンドを使用して、停止したコンテナを起動します。

$ podman start webserver
webserver

起動したかどうかを確認します。

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED        STATUS             PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  3 minutes ago  Up 16 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  2 minutes ago  Up 2 minutes ago               webserver2
コンテナを削除

コンテナを削除する前に停止する必要があります。

$ podman stop webserver2

コンテナを削除します。

$ podman rm webserver2

--forceを使用して、実行中のコンテナを削除できます フラグ。

$ podman rm webserver2 --force
35a286ba5a553d5f88e3d9795780f893cfb58bf4a126c4912d1ec56b9d0e5a27
コンテナを強制終了

コンテナの停止と強制終了は、最終的に同じことを達成する2つの異なることです。違いは、コンテナを停止するとコンテナが正常にシャットダウンされ、コンテナを強制終了すると強制的に終了するため、データが失われることです。

次のコマンドを使用して、コンテナを強制終了します。

$ podman kill -s 9 webserver2

上記のコマンドは、SIGNAL 9 (SIGKILL)を使用します コンテナを強制終了するオプション。

すべてのコンテナを強制終了するには、--allを使用します または-a フラグを立て、最新のコンテナのみを強制終了するには、--latestを使用します または-l フラグ。

画像を削除

rmiを使用して画像を削除できます コマンド。

$ podman rmi registry.redhat.io/rhel8/rsyslog

複数の画像をカンマで区切ることで削除できます。

$ podman rmi registry.redhat.io/rhel8/rsyslog registry.redhat.io/ubi8/ubi

システム上のすべての画像を削除するには、-aを使用します フラグ。

$ podman rmi -a
コンテナログの表示

コンテナログを表示するには、次のコマンドを使用します。

$ podman logs webserver
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
......

--tailを使用して、ログを最後の5行に制限できます。 オプション。

$ podman logs --tail=5 webserver
2021/10/05 10:13:52 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6)
2021/10/05 10:13:52 [notice] 1#1: OS: Linux 4.18.0-305.19.1.el8_4.x86_64
2021/10/05 10:13:52 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 262144:262144
2021/10/05 10:13:52 [notice] 1#1: start worker processes
2021/10/05 10:13:52 [notice] 1#1: start worker process 23

デフォルトでは、ログにタイムスタンプは取得されません。 -tを使用します ログにタイムスタンプを追加するためのフラグ。

$ podman logs -t webserver
2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
2021-10-05T09:25:02.033956297Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2021-10-05T09:25:02.043751152Z 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
2021-10-05T09:25:02.064561317Z 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
.....
コンテナの検査

コンテナを検査すると、コンテナに関する情報が出力されます。

$ podman inspect webserver
[
    {
        "Id": "19b6668bc6278a66b3ffc98ae1515af25f5bebcd20bf26de803cae41c4485f59",
        "Created": "2021-10-05T09:25:01.784949744Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
            "OciVersion": "1.0.2-dev",
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 4423,
....

デフォルトのコマンドは、長い出力をJSON形式で出力します。出力をフィルタリングするには、--formatを使用する必要があります オプション。コンテナがいつ開始されたかを確認するには、次のコマンドを実行します。

$ podman inspect webserver --format '{{.State.StartedAt}}'
2021-10-05 10:13:52.794806322 +0000 UTC
コンテナシェルへのアクセス

execを使用して、任意のコンテナのシェルプロンプトにアクセスできます。 オプション。

$ podman exec -it webserver2 /bin/bash
ポッド

Podmanには、Dockerにはない独自の機能があります。 Podmanは、一緒に動作するコンテナからポッドを作成できます。これにより、複数のコンテナをまとめて管理できます。

ポッドを作成するには、次のコマンドを使用します。

$ podman pod create --name mypod

新しく作成したポッドにコンテナを追加します。

$ podman run --pod mypod --name myimage1 image:latest
$ podman run --pod mypod --name myimage2 diff-image:latest

簡単な1行のコマンドを使用してコンテナを管理できるようになりました。

$ podman kill mypod      # Kill all containers
$ podman restart mypod   # Restart all containers
$ podman stop mypod      # Stop all containers
$ podman pod ps			# List all pods
$ podman pod top mypod   # Display running processes in a pod
$ podman pod inspect mypod # Inspect a Pod
$ podman pod rm mypod    # Remove the pod
結論

これで、Podmanをインストールしてコンテナを実行するためのチュートリアルは終了です。 Podmanでできることはたくさんありますが、これについては説明していません。ご不明な点がございましたら、下のコメント欄に投稿してください。


Rocky Linux
  1. Rocky Linux / Alma Linux /Centos8にPodmanをインストールして使用する方法

  2. RockyLinux8にElasticsearchをインストールして設定する方法

  3. RockyLinux8にDockerContainerをインストールしてセットアップする方法

  1. DockerとDockerをインストールする方法-RockyLinux8で作成する

  2. RockyLinux8にHAProxyをインストールして設定する方法

  3. Podmanとは何ですか?LinuxにPodmanをインストールする方法

  1. RockyLinuxにPostgreSQL13をインストールして使用する方法

  2. RockyLinux8にMongoDBをインストールして使用する方法

  3. RockyLinux8にpgAdmin4をインストールして使用する方法