コンテナは、アプリケーションとその依存関係をパッケージ化し、どこでも実行できる素晴らしいものです。2013年のDockerに始まり、コンテナはソフトウェア開発者の生活を容易にしました。
Dockerの欠点の1つは、rootユーザーとして実行される中央デーモンがあることで、これはセキュリティに影響します。Podmanは、Linuxシステム上でOCIコンテナをrootまたはrootレスで開発、管理、実行するための です。
ポッドマンの詳細については、以下の記事をご参照ください:
Dockerを使ったことがある人なら、Docker Composeについても知っていることでしょう。Docker Composeの詳細については、ドキュメントを参照してください。
Podman Composeとは?
Podman Compose プロジェクトは、docker-compose.yamlファイルを変更することなく、Docker Composeを置き換えることを目指しています。Podman Composeはworkを使うので、"pod "の最新の定義を見ておくと良いでしょう。
は、共有のストレージ/ネットワークリソースと、コンテナの実行方法を指定した1つまたは複数のPodman Composeグループです。
Podman Composeの基本的な考え方は、docker-compose.yamlファイルで定義されたサービスを選択し、各サービス用のコンテナを作成するというものです。Docker ComposeとPodman Composeの主な違いは、Podman Composeがプロジェクト全体のコンテナを単一のPodに追加し、すべてのコンテナが同じネットワークを共有することです。例を見てわかるように、コンテナを作成するときに--add-hostフラグが使用され、Docker Composeと同じようにコンテナの名前も付けられます。
インストール
Podman Composeの完全なインストール手順はPods - Kubernetesページにあります。最新の開発版をインストールするには、以下のコマンドを使ってください:
pip3 install https://.//-//..gz
プロジェクトページ必要なので、インストールされていることを確認してください。Fedora では、以下のコマンドを使って Podman をインストールします:
sudo dnf install podman
例:Podman Composeを使ったWordPressウェブサイトの立ち上げ
version: "3.8"services:image: wordpressrestart: alwaysvolumes:- wordpress:/var/www/htmlports:environment:WORDPRESS_DB_HOST: dbWORDPRESS_DB_USER: magazineWORDPRESS_DB_NAME: magazineWORDPRESS_DB_PASSWORD: 1maGazine!WORDPRESS_TABLE_PREFIX: czWORDPRESS_DEBUG: 0depends_on:networks:- wpnetimage: mariadb:10.5restart: alwaysports:volumes:- wpdbvol:/var/lib/mysqlenvironment:MYSQL_DATABASE: magazineMYSQL_USER: magazineMYSQL_PASSWORD: 1maGazine!MYSQL_ROOT_PASSWORD: 1maGazine!networks:- wpnetvolumes:wordpress: {}wpdbvol: {}networks:wpnet: {}
Docker Composeはwpsite_web_1とwpsite_db_1という2つのコンテナを作成し、wpsite_wpnetというネットワークに接続します。
では、プロジェクトディレクトリでpodman-composeを実行するとどうなるか見てみましょう。まず、コマンドが実行されたディレクトリの名前がついたポッドが作成されます。次に、YAMLファイルで定義された名前のボリュームを探し、存在しなければ作成します。次に、YAML ファイルの services セクションにリストされているサービスごとにコンテナが作成され、ポッドに追加されます。
コンテナの名前は Docker Compose と同様です。例えば、wpsite_web_1というWebサービス用のコンテナを作成します。 Podman Composeはまた、名前を付けた各コンテナにlocalhostエイリアスを追加します。その後、Docker のようなブリッジネットワーク上ではなくても、コンテナ同士で名前解決ができるようになります。これを行うには、オプション -add-host を-add-host web:localhostします。
docker-compose.yaml には、ホストポート 8080 からコンテナポート 80 へのウェブサービスのポート転送が含まれていることに注意してください。これでブラウザから http://:80 で新しい WordPress インスタンスにアクセスできるようになります。
ポッドとコンテナの管理
実行中のコンテナを確認するには、podman psを使用します。podman psには、ポッド内のインフラストラクチャ・コンテナだけでなく、Webコンテナやデータベース・コンテナも表示されます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESacec7 docker.io/library/wordpress:latest apache2-foregroun... 2 hours ago Up 2 hours ago 0.0.0.0:8080->80/tcp, 0.0.0.0:6603->3306/tcp wpsite_web_1caa104 docker.io/library/mariadb:10.5 mysqld 2 hours ago Up 2 hours ago 0.0.0.0:8080->80/tcp, 0.0.0.0:6603->3306/tcp wpsite_db_118e3e k8s.gcr.io/pause:3.2
Podmanが、コマンドを実行したフォルダにちなんで、このプロジェクト用のPodを作成したことも確認できます。
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS8a73e wpsite Degraded 2 hours ago 18e3e 3
コンテナを停止するには、別のコマンド・ウィンドウで以下のコマンドを入力します:
podman-compose down
これは、ポッドを停止して削除することによっても実行できます。これは基本的に、すべてのコンテナを停止して削除し、含まれているポッドを削除します。つまり、これらのコマンドでも同じことができます:
podman pod stop podnamepodman pod rm podname
docker-compose.yaml 定義したボリュームは削除されないことに注意してください。つまり、WordPressサイトの状態は保存され、このコマンドを実行することで復元することができます。
podman-compose up
要するに、PodmanファンでPodmanを使ってコンテナを使っている人なら、Podman Composeを使って開発や本番でコンテナを管理できます。




