GNU/Linux >> Linux の 問題 >  >> OpenSuse

OpenSUSELeap15.3でPodmanをインストールして使用する方法

Podmanは、Dockerコマンドラインと同様のエクスペリエンスを提供することでBuildahとSkopeoを補完します。つまり、ユーザーがスタンドアロンの(オーケストレーションされていない)コンテナーを実行できるようにします。また、Podmanはコンテナやポッドを実行するためにデーモンを必要としないため、大きな太ったデーモンに簡単に別れを告げることができます。バックグラウンドで処理を行うデーモンはありません。つまり、Podmanはsystemdを介してシステムサービスに統合できます。 。

このガイドでは、OpenSUSELeapにPodmanをインストールする方法を学習します。

関連記事

  • Debian11にPodmanをインストールして使用する方法
  • Rocky Linux / Alma Linux /Centos8にPodmanをインストールして使用する方法
  • Fedora34/35にPodmanをインストールして使用する方法
  • Rocky Linux /Centos8でdockerをインストールして構成する方法
  • Dockerの使用を開始する例を使用して作成する
  • ビルドエージェントとしてのDocker–DockerでJenkinsビルドを実行する

前提条件

フォローするには、次のものがあることを確認してください。

  • 更新されたOpenSUSELEAPサーバー/ワークステーション
  • rootアクセスまたはsudoアクセスを持つユーザー
  • インターネットへのアクセス

目次

  1. サーバーが最新であることを確認する
  2. podmanのインストール
  3. コマンドラインの例
  4. Runapostgres永続コンテナ
  5. systemdとPodmanを介したシステムサービスとしてのコンテナの管理

1。サーバーが最新であることを確認する

このコマンドを使用して、サーバーパッケージが更新されていることを確認します

sudo zypper ref
sudo zypper update -y

共通のパッケージがインストールされていることを確認しましょう

sudo zypper install -y vim

2。 Podmanのインストール

Podmanは、OpenSUSEのデフォルトのリポジトリで利用できます。次のコマンドを使用してインストールします:

sudo zypper install -y podman

このコマンドは、Podmanとその依存関係をインストールします。

それで全部です。これで、Podmanで遊ぶことができます。

3。コマンドラインの例

podmanを使用してOpenSUSELeapContainerを実行する方法を見てみましょう。

Dockerでは、次のコマンドを使用してOpenSUSELeapコンテナを実行します。

docker run -it opensuse/leap:15.3 sh

dockerがないため、これは失敗します OpenSUSEマシンのコマンド。 Dockerをpodmanに置き換えることができます:

podman run -it opensuse/leap:15.3 sh

いくつかのコマンドを実行して、期待どおりに機能していることを確認しましょう。

~> podman run -it opensuse/leap:15.3 sh
Trying to pull registry.opensuse.org/opensuse/leap:15.3...
Getting image source signatures
Copying blob 7bc46307c67f done
Copying config 09d5e2cf44 done
Writing manifest to image destination
Storing signatures
sh-4.4# whoami
root
sh-4.4# cat /etc/os-release
NAME="openSUSE Leap"
VERSION="15.3"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.3"
PRETTY_NAME="openSUSE Leap 15.3"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.3"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
sh-4.4#

コンテナのステータスを確認するには、podman psを使用します コマンド

~> podman ps -a
CONTAINER ID  IMAGE                                     COMMAND  CREATED         STATUS                     PORTS   NAMES
eaa09408b382  registry.opensuse.org/opensuse/leap:15.3  sh       53 seconds ago  Exited (0) 13 seconds ago          priceless_curran

コンテナを削除するには、podman rmを使用します :

~> podman rm eaa09408b382
eaa09408b382ceb33a4696fed282e76df5130abf556b085ddc199eb30af54c8c

画像を一覧表示するには:

~> podman images
REPOSITORY                           TAG     IMAGE ID      CREATED      SIZE
registry.opensuse.org/opensuse/leap  15.3    09d5e2cf44af  2 weeks ago  111 MB

画像podman image rmを使用して画像を削除できます コマンド:

~> podman image rm opensuse/leap:15.3
Untagged: registry.opensuse.org/opensuse/leap:15.3
Deleted: 09d5e2cf44af39c62b803e65991d700d8300dc34d82ff03c9cf359b9e092177a

上記から、podmancommandnがdockerと同じ構文を使用していることを確認できます

4。 Postgres永続コンテナを実行する

次に、永続コンテナーを実行する方法を調べてみましょう。この例では、Postgres 14コンテナーを実行し、postgresデータをローカルボリュームにマウントして、再起動を持続できるようにします。コンテナはエピメラルであるため、ローカルボリュームに保存しないと、データが失われます。

docker.io/library/postgres:14.0-alpineをプルします 画像

~> podman image rm opensuse/leap:15.3
Untagged: registry.opensuse.org/opensuse/leap:15.3
Deleted: 09d5e2cf44af39c62b803e65991d700d8300dc34d82ff03c9cf359b9e092177a
[email protected]:~> podman pull docker.io/library/postgres:14.0-alpine
Trying to pull docker.io/library/postgres:14.0-alpine...
Getting image source signatures
Copying blob 82e9eb77798b done
Copying blob 5034a66b99e6 done
Copying blob 3da258773353 done
Copying blob c6b2245b2f36 done
Copying blob a0d0a0d46f8b done
Copying blob ccd761727716 done
Copying blob 028554d3b6cc done
Copying blob 2c7ee7bc69e8 done
Copying config 87440f4e7f done
Writing manifest to image destination
Storing signatures
87440f4e7f9e60607dc11a4f0590a1c69b3a1c075211df478e22b0c27fb263e6

画像を確認する

~> podman images
REPOSITORY                  TAG          IMAGE ID      CREATED      SIZE
docker.io/library/postgres  14.0-alpine  87440f4e7f9e  2 weeks ago  198 MB

で画像を検査します
$ podman inspect 87440f4e7f9e

コンテナを起動したら、Postgresデータを処理するフォルダを設定しましょう:

$ mkdir -p ~/apps/postgres/data

実行する

podman run -d \
    -p 5432:5432 \
    -v ~/apps/postgres/data:/var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=Sup3rSecre7 \
    -e POSTGRES_USER=citizix_user \
    -e POSTGRES_DB=citizix_db \
    docker.io/library/postgres:14.0-alpine

これが私の出力です

~> podman run -d \
>     -p 5432:5432 \
>     -v ~/apps/postgres/data:/var/lib/postgresql/data \
>     -e POSTGRES_PASSWORD=Sup3rSecre7 \
>     -e POSTGRES_USER=citizix_user \
>     -e POSTGRES_DB=citizix_db \
>     docker.io/library/postgres:14.0-alpine
1607081ed241073e20e6186543c1882e977f2a91c9c061ccdd36a3e357051a44

プロセスを確認する:

~> podman ps
CONTAINER ID  IMAGE                                   COMMAND   CREATED         STATUS             PORTS                   NAMES
1607081ed241  docker.io/library/postgres:14.0-alpine  postgres  11 seconds ago  Up 10 seconds ago  0.0.0.0:5432->5432/tcp  happy_jang

これでコンテナログを確認します。 dbを初期化していることがわかります

~> podman logs 1607081ed241 | head
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok

データベースに接続して、いくつかの操作を実行しましょう

$ podman exec -it 1607081ed241 /bin/bash
bash-5.1# psql -U citizix_user -d citizix_db;
psql (14.0)
Type "help" for help.

citizix_db=# select version();
                                                   version
--------------------------------------------------------------------------------------------------------------
 PostgreSQL 14.0 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
(1 row)

citizix_db=#

次に、コンテナの強制終了と削除について見ていきましょう。 podman killを使用できます コンテナを停止します。これによりコンテナは停止しますが、引き続き存在します。 podman ps -a を使用します リストする。完全に削除するには、podman rm -f

~> podman kill 1607081ed241
1607081ed241073e20e6186543c1882e977f2a91c9c061ccdd36a3e357051a44

~> podman ps -a
CONTAINER ID  IMAGE                                   COMMAND   CREATED             STATUS                       PORTS                   NAMES
1607081ed241  docker.io/library/postgres:14.0-alpine  postgres  About a minute ago  Exited (137) 15 seconds ago  0.0.0.0:5432->5432/tcp  happy_jang

~> podman rm -f 1607081ed241
1607081ed241073e20e6186543c1882e977f2a91c9c061ccdd36a3e357051a44

5。 systemdとPodmanを介したシステムサービスとしてのコンテナの管理

systemdを介してpodmanコンテナを管理できます。 systemdを作成しましょう 上で作成したpostgresコンテナを処理するためのリソースファイル。

postgres podmanファイルを作成します:

sudo vim /etc/systemd/system/postgres-podman.service

このコンテンツを追加

[Unit]
Description=Custom Postgres Podman Container
After=network.target

[Service]
Type=simple
TimeoutStartSec=5m
ExecStartPre=-/usr/bin/podman rm -f postgrespodman

ExecStart=/usr/bin/podman run \
    -p 5432:5432 \
    -v /home/ec2-user/apps/postgres/data:/var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=Sup3rSecre7 \
    -e POSTGRES_USER=citizix_user \
    -e POSTGRES_DB=citizix_db \
    docker.io/library/postgres:14.0-alpine

ExecReload=-/usr/bin/podman stop postgrespodman
ExecReload=-/usr/bin/podman rm postgrespodman
ExecStop=-/usr/bin/podman stop postgrespodman
Restart=always
RestartSec=30

[Install]

次に、systemdをリロードできます カタログを作成してサービスを開始します:

sudo systemctl daemon-reload
sudo systemctl start postgres-podman

サービスステータスの確認

~> sudo systemctl status postgres-podman
● postgres-podman.service - Custom Postgres Podman Container
     Loaded: loaded (/etc/systemd/system/postgres-podman.service; static)
     Active: active (running) since Mon 2021-11-15 05:40:34 UTC; 12s ago
    Process: 23658 ExecStartPre=/usr/bin/podman rm -f postgrespodman (code=exited, status=1/FAILURE)
   Main PID: 23687 (podman)
      Tasks: 12 (limit: 4587)
     CGroup: /system.slice/postgres-podman.service
             ├─23687 /usr/bin/podman run -p 5432:5432 -v /home/ec2-user/apps/postgres/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=Sup3rSecre7 -e POSTG>
             └─23828 /usr/bin/conmon --api-version 1 -c 8a18a63727ecd19d03710544e3e7ee9241e886d9fed45c1f25e29547ab61d600 -u 8a18a63727ecd19d03710544e3e7ee924>

Nov 15 05:40:35 ip-10-2-40-188 podman[23687]: 2021-11-15 05:40:35.477 UTC [1] LOG:  starting PostgreSQL 14.0 on x86_64-pc-linux-musl, compiled by gcc (Alpine>
Nov 15 05:40:35 ip-10-2-40-188 podman[23687]: 2021-11-15 05:40:35.478 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
Nov 15 05:40:35 ip-10-2-40-188 podman[23687]: 2021-11-15 05:40:35.478 UTC [1] LOG:  listening on IPv6 address "::", port 5432
Nov 15 05:40:35 ip-10-2-40-188 podman[23687]: 2021-11-15 05:40:35.482 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
Nov 15 05:40:35 ip-10-2-40-188 podman[23687]: 2021-11-15 05:40:35.486 UTC [22] LOG:  database system was interrupted; last known up at 2021-11-15 05:35:02 UTC
Nov 15 05:40:35 ip-10-2-40-188 podman[23687]: 2021-11-15 05:40:35.497 UTC [22] LOG:  database system was not properly shut down; automatic recovery in progre>
Nov 15 05:40:35 ip-10-2-40-188 podman[23687]: 2021-11-15 05:40:35.499 UTC [22] LOG:  redo starts at 0/16FAD98
Nov 15 05:40:35 ip-10-2-40-188 podman[23687]: 2021-11-15 05:40:35.499 UTC [22] LOG:  invalid record length at 0/16FADD0: wanted 24, got 0
Nov 15 05:40:35 ip-10-2-40-188 podman[23687]: 2021-11-15 05:40:35.499 UTC [22] LOG:  redo done at 0/16FAD98 system usage: CPU: user: 0.00 s, system: 0.00 s, >
Nov 15 05:40:35 ip-10-2-40-188 podman[23687]: 2021-11-15 05:40:35.509 UTC [1] LOG:  database system is ready to accept connections

Podmanで管理されているコンテナに基づいてカスタムシステムサービスを設定しました!

結論

このガイドでは、OpenSUSELeapサーバーにPodmanをインストールする方法を探ることができました。


OpenSuse
  1. OpenSUSELeap42.1にPostgreSQLとphpPgAdminをインストールする方法

  2. OpenSUSELeap15.3にMongodb5をインストールする方法

  3. MysqlServer8をOpenSUSELeap15.3にインストールする方法

  1. OpenSUSELeap15.3にRedis6をインストールして設定する方法

  2. OpenSUSELeap15.3にErlangをインストールする方法

  3. Nginxをプロキシとしてインストールおよび設定する方法OpenSUSELeap15.3

  1. OpenSUSELeap15.3にMariadb10をインストールして構成する方法

  2. OpenSUSE Leap 15.3にPHPとNginx(LEMP)をインストールしてセットアップする方法

  3. OpenSUSELeap11にSquidProxyをインストールして設定する方法