Podmanガイド · 2 min read · Oct 05, 2025

AlmaLinux 9にPodmanをインストールして使用するための初心者ガイド

Podmanは、Open Container Initiative (OCI)コンテナおよびコンテナイメージを使用してアプリケーションをデプロイするためのLinuxネイティブツールです。DockerイメージやOCIコンテナイメージを含む複数のコンテナイメージ形式をサポートしています。また、Podmanはポッドやコンテナのグループを管理することもサポートしています。

Podmanはデーモンレスツールであり、サービスなしで単一のバイナリコマンドラインとして実行されます。Dockerに似たコマンドラインを提供し、’alias docker=podman’のようなエイリアスを使用できます。

このガイドでは、AlmaLinux 9サーバーでDockerエンジンの代替としてPodmanをインストールして使用する方法を示します。コンテナアプリケーションを管理するためのPodmanの基本的な使用法を学びます。このガイドを完了することで、ローカル開発のためのコンテナオーケストレーションとしてPodmanを使用する理解が深まります。

前提条件

このガイドを始めるには、以下が必要です:

  • AlmaLinux 9サーバー - この例では、ホスト名が’ AlmaLinux9 ‘のサーバーを使用します。
  • sudo/root管理者権限を持つ非rootユーザー。

Podmanのインストール

Podmanはデーモンレスでオープンソースのコンテナオーケストレーションツールであり、迅速な開発を可能にします。PodmanはLinuxネイティブアプリケーションで、Dockerに似たコマンドラインインターフェースを提供します。

Podmanを使用すると、OCI(Open Containers Initiative)コンテナおよびコンテナイメージを使用してアプリケーションを検索、実行、共有、デプロイできます。

AlmaLinuxでは、PodmanはAppStreamリポジトリにデフォルトで利用可能であり、DNFパッケージマネージャーを使用してインストールできます。

次のdnfコマンドを実行して、AlmaLinuxサーバーにPodmanをインストールします。

sudo dnf install podman

プロンプトが表示されたらyを入力し、ENTERを押します。

installing podman

Podmanはデーモンレスであるため、デーモンを起動せずに実行できます。

次のコマンドを実行して、Podmanのバージョンとインストールに関する詳細情報を確認します。

podman version

以下は、執筆時の現在のPodmanバージョンの出力です:

checking podman version

さらに、次のコマンドを使用してPodmanのインストールの詳細を確認することもできます。

podman info

非rootユーザーとしてPodmanを実行する

このセクションでは、非rootユーザーのためにPodmanを設定します。新しいユーザーを作成し、新しい非rootユーザーがPodmanでコンテナを実行できるようにします。

次のコマンドを実行して、’ alice ‘という名前の新しいユーザーを作成し、そのパスワードを設定します。プロンプトが表示されたら新しいパスワードを入力し、再度入力します。

sudo useradd -m -s /bin/bash alice  
sudo passwd alice

次に、新しいユーザー’ alice ‘を’ wheel ‘グループに追加します。これにより、新しいユーザーは’sudo‘を実行してrootになることができます。

sudo usermod -aG wheel alice

その後、次のコマンドを実行してユーザー’alice’のために持続性を有効にします。これにより、ユーザー’alice’がログアウトしてもコンテナプロセスを長時間実行できるようになります。

sudo loginctl enable-linger alice

次に、以下のコマンドを使用して新しいユーザー’ alice ‘としてログインします。

su - alice

create new user

以下の’ podman ‘コマンドを実行して、’ hello-world ‘イメージを使用して新しいコンテナを実行します。

podman run hello-world

成功すると、次のような出力が得られます:

running container hello-world

最後に、次の’podman’コマンドを実行して、実行中および終了したコンテナのリストを確認します。

podman ps -a

設定が成功していれば、’ hello-world ‘のベースイメージを持つコンテナが’ Exited ‘の状態で表示されるはずです。

コンテナイメージの検索

デフォルトでは、PodmanはRedhatイメージレジストリ、quay.io、DockerHubなど、複数のイメージレジストリからコンテナイメージを取得します。’/etc/containers/registries.conf’の設定にさらにコンテナイメージレジストリを追加できます。

この例ではDockerHubをコンテナレジストリとして使用するので、始めましょう。

次のコマンドを実行して、’ httpd ‘を含む新しいコンテナイメージを検索します。

podman search httpd

以下は、ターミナルで受け取るべき出力です:

searching container

–limit ‘オプションを使用して出力を制限することもできます。

podman search httpd --limit 3

これにより、各コンテナイメージレジストリから上位3つのコンテナイメージのみが表示されます。

finding images top 3

最後に、’ –filter ‘オプションを使用することもできます。

podman search httpd --filter=is-official

これにより、公式のコンテナイメージのみが表示されます。

イメージのダウンロード

コンテナイメージを見つけたら、次のステップはレジストリからコンテナイメージをダウンロードすることです。

次のコマンドを実行して、’ httpd ‘イメージを’ alpine ‘タグでダウンロードします。

podman pull httpd:alpine

使用するイメージレジストリを選択します。この例ではDockerHubを使用します。

ソースが選択されると、ダウンロードプロセスが始まります。

pull images

完了したら、次のコマンドを実行して、AlmaLinuxサーバー上の利用可能なイメージを確認します。

podman images

この時点で、成功していれば、quay.ioからの’ hello-world ‘イメージとDockerHubからの’ httpd ‘イメージの2つのコンテナイメージが得られるはずです。

イメージの検査

イメージを検査することは、コンテナがどのように起動するかに関する詳細情報を取得するための強力な方法です。PodmanおよびDockerでは、’inspect’オプションを使用してイメージを検査できます。

次のコマンドを実行して、’ httpd:alpine ‘イメージに関する詳細情報を取得します。

podman inspect docker.io/library/httpd:alpine

これにより、作成日、サイズ、デフォルトの作業ディレクトリ、起動コマンド、公開ポートなど、イメージに関する詳細情報が表示されます。

detailed image

追加のパラメータを使用して、確認したい部分を指定することもできます。

podman inspect --format "size: {{.Size}}" docker.io/library/httpd:alpine  
podman inspect --format "ports: {{.Config.ExposedPorts}}" docker.io/library/httpd:alpine  
podman inspect --format "workdir: {{.Config.WorkingDir}}" docker.io/library/httpd:alpine

これにより、イメージのサイズ、デフォルトの公開ポート、デフォルトの作業ディレクトリが表示されます。

コンテナの実行

このセクションでは、Podmanを使用してコンテナを実行する方法を学びます。

以下のコマンドを入力して、’httpd’という名前の新しいコンテナを実行し、ホストマシンでポート8080を公開し、’ httpd:alpine ‘イメージを使用します。また、’ –rm ‘パラメータは、コンテナを停止すると自動的に削除されます。

podman run -it --rm -d -p 8080:80 --name httpd docker.io/library/httpd:alpine

成功すると、新しいコンテナIDのランダムな文字列と数字が得られます。

以下のコマンドを使用して実行中のコンテナを確認します。’ httpd ‘コンテナが’ Up ‘の状態で、ホストマシンでポート8080を使用しているはずです。

podman ps

次に、以下のcurlコマンドを使用して’httpd’コンテナを確認できます。以下の例のIPアドレスをサーバーのIPアドレスに置き換えてください。

curl http://192.168.5.20:8080/

成功すると、次のような出力が得られます:

さらに、ウェブブラウザを介して’httpd’コンテナにアクセスすることもできます。ウェブブラウザを開き、サーバーのIPアドレスの後にコンテナポート8080を追加して訪問します(例:http://192.168.5.20:8080/)。

成功すると、コンテナ’ httpd ‘からのデフォルトのindex.htmlページが次のように表示されます:

コンテナのログを確認する

‘httpd’コンテナが起動しているので、今度はコンテナからのログを確認します。これはアプリケーションのデバッグに役立ちます。

httpd ‘コンテナからすべてのログを表示するには、次のコマンドを実行します。

podman logs httpd

これは、’httpd’コンテナからのログの例です。

次に、’ –tail ‘パラメータを使用してログ出力を減らすことができます。

podman logs --tail 20 httpd

この例では、‘tail 20 ‘パラメータは、コンテナ’ httpd ‘からの最新の20行のログを表示します。

コンテナの停止

コンテナを停止したい場合は、単に*podman stop*を実行します。

次のコマンドを実行して、’ httpd ‘コンテナを停止します。

podman stop httpd

httpd ‘コンテナが停止したら、以下のコマンドを実行してシステム上の利用可能なコンテナのリストを確認します。

podman ps  
podman ps -a

httpd ‘コンテナは、コンテナが停止した後に自動的に削除されます。これは、コンテナを’ –rm ‘パラメータで実行したためです。

カスタムボリュームでのコンテナの実行

この例では、カスタムボリュームで新しいコンテナを実行します。これにより、ホストマシンのローカルディレクトリがコンテナにマウントされます。

ユーザーaliceのホームディレクトリ内に新しい’ data ‘ディレクトリを作成します。次に、nanoエディタを使用して’ data ‘ディレクトリ内に新しい’ index.html ‘ファイルを作成します。

mkdir -p ~/data/  
nano ~/data/index.html

以下のHTMLスクリプトを挿入します。

  
  
  
    
  Container Nginxへようこそ  
  
  
  

Podmanで管理されたhttpdコンテナからこんにちは

ファイルを保存して閉じます。

次に、以下のコマンドを実行して、’ data ‘ディレクトリのカスタムボリュームを持つ新しいコンテナ’httpd’を実行します。これは、コンテナ内の’ /usr/local/apache2/htdocs ‘ディレクトリにマウントされます。

podman run --privileged=true -it --rm -d -p 8080:80 --name httpd -v ~/data:/usr/local/apache2/htdocs docker.io/library/httpd:alpine

さらに、このコンテナは’ –privileged=true ‘という追加のパラメータで実行されています。これはテスト用であり、コンテナはrootユーザーではなくユーザー’ alice ‘として実行されます。Podmanの特権フラグに関する詳細情報を取得します。

次に、以下のコマンドを実行して、システム上の実行中のコンテナを確認します。

podman ps

成功すると、’ httpd ‘という新しいコンテナが’ Up ‘の状態で、ホストマシンでポート8080が公開されているはずです。

以下のcurlコマンドを実行して、新しいコンテナ’ httpd ‘を確認します。

curl http://192.168.5.21:8080/

以前に作成したindex.htmlスクリプトの出力が得られるはずです。

accessing container

ウェブブラウザでhttp://192.168.5.21:8080/にアクセスすると、次のようなカスタムページが表示されるはずです:

access container

コンテナにログインする

httpd ‘コンテナが実行中の状態で、’ podman exec ‘コマンドを利用してシェル経由でコンテナにアクセスできます。

以下のコマンドを使用して、コンテナ’ httpd ‘にログインします。これにより、コンテナ’ httpd ‘で’ /bin/sh ‘シェルが実行され、現在のセッションに接続されます。

podman exec -it httpd /bin/sh

ログインすると、’ WorkingDir ‘ディレクトリにいるはずです。この例では、デフォルトのWorkingDirは’ /usr/local/apache2 ‘ディレクトリです。

次に、コンテナ’ httpd ‘で以下のコマンドを実行します。現在のユーザー、コンテナのローカルIPアドレス、およびコンテナのデフォルトゲートウェイを確認します。

id  
  
ip a  
route -n

異なるIPアドレスとゲートウェイの出力が得られる場合がありますが、次のように似た出力が得られるはずです:

accessing container

Podの実行と管理

Podmanでは、Podを作成して実行できます。ポッドはコンテナのラッパーであり、複数のコンテナが単一のポッドで実行できます。Kubernetesのように、ポッドはアプリケーションが実行される最小のエンティティです。

Podmanを使用すると、KubernetesなしでPodを作成して実行できます。

次のコマンドを実行して、’ httpd:alpine ‘イメージを使用して新しいポッドhttpdTestを作成し、ホストマシンでポート9090を公開します。

podman run -dt --pod new:httpdTest -p 9090:80 docker.io/library/httpd:alpine

成功すると、ポッドIDのランダムな文字列と数字が得られます。

次のコマンドを実行して、システム上の実行中のポッドを確認します。

podman pod ls

httpdTest ‘ポッドが’ Running ‘の状態で、2つのコンテナが表示されるはずです。

create pod

次に、以下のようにポッドに対して’ inspect ‘オプションを利用できます。

podman pod inspect httpdTest

これにより、ポッドhttpdTestに関する詳細情報が得られます。

podman inspect pod

次のコマンドを使用して、ポッド内で実行されているコンテナの数とコンテナの名前を確認することもできます。

podman pod inspect --format="containers: {{.NumContainers}}" httpdTest  
podman pod inspect --format "{{.Containers}}" httpdTest

次のような出力が得られます:

最後に、ホストマシンでポート9090で実行されているポッドhttpdTestにアクセスするために、次のコマンドを実行します。成功すると、ポッドhttpdTestで実行されているコンテナのデフォルトのindex.htmlページが得られます。

curl http://192.168.5.21:9090/

結論

おめでとうございます!AlmaLinux 9にPodmanをインストールしました。また、イメージやコンテナを管理するためのPodmanの基本的な使用法も学びました。さらに、PodmanでPodを作成して実行する方法も学びました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。