テクノロジーガイド

Debian 11 に Podman をインストールして使う方法

2 min read コンテナ 更新されました 22 Oct 2025
Debian 11 に Podman をインストールして使う
Debian 11 に Podman をインストールして使う

Podman ロゴとコンテナの概念図

Podman(POD MANager)は Red Hat が開発した OCI 準拠のコンテナエンジンで、Docker の代替として使われます。Podman はコンテナ、イメージ、ボリュームをコマンドラインで操作します。Docker と類似していますが、Podman はコンテナ実行に常駐デーモンを必要としない点が主な違いです。内部では libpod ライブラリを使ってコンテナエコシステム全体を管理します。

前提条件

  • Debian 11 を実行しているサーバー
  • サーバーに root パスワードが設定されていること(または sudo 権限のあるユーザー)

Podman のインストール

Debian 11 の標準リポジトリに Podman パッケージが含まれています。以下のコマンドでインストールします。

apt-get install podman -y

インストール後、バージョンを確認します。

podman --version

期待される出力の例:

podman version 3.0.1

Podman の詳細情報を取得するには次を実行します。

podman info

例(出力は環境により異なります):

host:
  arch: amd64
  buildahVersion: 1.19.6
  cgroupManager: systemd
  cgroupVersion: v2
  conmon:
    package: 'conmon: /usr/bin/conmon'
    path: /usr/bin/conmon
    version: 'conmon version 2.0.25, commit: unknown'
  cpus: 2
  distribution:
    distribution: debian
    version: "11"
  eventLogger: journald
  hostname: debian11
  idMappings:
    gidmap: null
    uidmap: null
  kernel: 5.10.0-8-amd64
  linkmode: dynamic
  memFree: 3365183488
  memTotal: 4122267648
  ociRuntime:
    name: crun
    package: 'crun: /usr/bin/crun'
    path: /usr/bin/crun
    version: |-
      crun version 0.17
      commit: 0e9229ae34caaebcb86f1fde18de3acaf18c6d9a
      spec: 1.0.0
      +SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +YAJL
  os: linux
  remoteSocket:
    exists: true
    path: /run/podman/podman.sock
  security:
    apparmorEnabled: true
    capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT
    rootless: false
    seccompEnabled: true
    selinuxEnabled: false

レジストリ設定(OCI Registry の追加)

Podman は /etc/containers/registries.conf を使ってイメージの取得先を定義します。必要に応じて編集してください。

nano /etc/containers/registries.conf

ファイル末尾に次の行を追加します(例)。insecure なレジストリやブロック設定をここで定義します。

[registries.insecure]
registries = [ ]
# If you need to block pull access from a registry, uncomment the section below
# and add the registries fully-qualified name.
# Docker only
[registries.block]
registries = [ ]

保存して終了してください。

重要: 本番環境では insecured なレジストリを利用しないか、TLS 証明書の管理を必ず行ってください。

Podman の基本的な使い方

以下はイメージの取得、コンテナの起動、一覧確認、接続、ログ確認などの基本操作です。

イメージを取得します(例: debian)

podman pull debian

取得の出力例:

Resolved "debian" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Trying to pull docker.io/library/debian:latest...
Getting image source signatures
Copying blob 647acf3d48c2 done  
Copying config 827e561138 done  
Writing manifest to image destination
Storing signatures
827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc

ローカルのイメージ一覧を表示します。

podman images

出力例:

REPOSITORY                TAG     IMAGE ID      CREATED      SIZE
docker.io/library/debian  latest  827e5611389a  11 days ago  129 MB

イメージからコンテナを起動します。

podman run -dit debian:latest

起動直後に返されるコンテナ ID の例:

f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103

実行中コンテナの一覧を表示します。

podman ps

出力例:

CONTAINER ID  IMAGE                            COMMAND  CREATED         STATUS             PORTS   NAMES
f85c4df5ab78  docker.io/library/debian:latest  bash     13 seconds ago  Up 13 seconds ago          competent_cori

コンテナの詳細を確認します。

podman inspect f85c4df5ab78

ログを確認します。

podman logs f85c4df5ab78

実行中コンテナへ接続(シェルを開く)

podman exec -it f85c4df5ab78 /bin/bash

コンテナ内プロンプト例:

root@f85c4df5ab78:/#

コンテナシェルから抜けるには exit を実行します。

root@f85c4df5ab78:/# exit

コンテナの停止と削除

コンテナを停止します。

podman stop f85c4df5ab78

すべてのコンテナ(停止済み含む)を表示:

podman ps -a

停止したコンテナを削除:

podman rm f85c4df5ab78

最新コンテナに対する操作ショートカット:

podman stop --latest
podman start --latest
podman rm --latest

すべてのコンテナを強制削除:

podman rm -f `podman ps -aq`

イメージを削除します(IMAGE ID の例):

podman rmi 827e5611389a

削除の出力例:

Untagged: docker.io/library/debian:latest
Deleted: 827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc

役割別チェックリスト(管理者 / 開発者)

管理者向けチェックリスト:

  • Podman のバージョンとシステム互換性を確認する
  • /etc/containers/registries.conf をレビューし、社内レジストリを適切に設定する
  • デーモン不要だが、rootless モードと root モードの違いを理解して運用方針を決める
  • セキュリティポリシー(AppArmor/SELinux、capabilities)を適用する
  • ログの集約(journald / syslog)とバックアップを設定する

開発者向けチェックリスト:

  • Dockerfile の互換性を確認(ほとんどのケースでそのまま使える)
  • rootless モードでの挙動をローカルでテストする
  • イメージの最小化(不要なパッケージを削除)を行う
  • CI/CD で podman build / podman push を組み込む

コマンド早見表(チートシート)

基本操作:

podman pull            # イメージ取得
podman images                 # ローカルイメージ一覧
podman run -dit        # コンテナ起動(デタッチ)
podman ps                     # 実行中コンテナ一覧
podman ps -a                  # すべてのコンテナ
podman stop        # 停止
podman start       # 起動
podman rm          # 削除
podman rmi          # イメージ削除
podman exec -it  /bin/bash  # シェル接続
podman logs        # ログ表示
podman inspect     # 詳細情報

イメージビルド:

podman build -t myimage:tag .
podman push myimage:tag registry.example.com/myimage:tag

rootless(非特権)モードの実行:

# root でなく一般ユーザーとして podman コマンドを実行
podman info | grep rootless

セキュリティと運用上の注意点

  • Podman はデーモンを持たないため、攻撃対象の面が異なりますが、コンテナ内の脆弱性やマウントされたホストパスには注意してください。
  • rootless モードは安全性を高めますが、機能面で制限がある場合があります(ポート 1024 未満のバインド等)。
  • AppArmor / SELinux プロファイルと seccomp の有効化を検討してください。
  • イメージ署名とレジストリ認証を導入して信頼できるイメージのみを利用してください。

よくある失敗例と対処(いつ失敗するか)

  • イメージが取得できない: /etc/containers/registries.conf が不適切、ネットワーク制限、またはレジストリへの認証情報不足が原因。 解決: registries.conf を確認、ネットワーク接続、認証情報を設定。

  • rootless で特権操作が必要: 標準ユーザーではできない操作がある。 解決: 必要に応じて root で実行するか、別の設計(ポート転送やプロキシ)を検討。

  • コンテナが即時終了する: CMD/ENTRYPOINT の設定ミスやプロセスがフォアグラウンドで実行されていない。 解決: コンテナ内で実行されるプロセスを確認し、フォアグラウンド実行にする。

代替アプローチと比較

  • Docker: 同等の CLI を提供し、エコシステムは成熟しています。デーモン方式で中央制御が容易だが、デーモンの管理が必要。
  • Buildah / Skopeo: イメージのビルドや操作に特化したツール。Podman と組み合わせて使うことが多い。
  • rootless Podman: セキュリティを重視する開発環境に適するが、機能制約がある場合あり。

選択のヒューリスティック: 開発用途で既存の Docker ワークフローを使いたいなら Docker。本番でデーモン削減と rootless を優先するなら Podman を検討。

簡易用語集(1行定義)

  • OCI: Open Container Initiative。コンテナの標準仕様。
  • Podman: デーモンレスな OCI コンテナエンジン。
  • rootless: root 権限を使わずにコンテナを実行するモード。
  • registries.conf: Podman が参照するレジストリ設定ファイル。

FAQ

Q: Podman は Docker と完全に互換ですか?

A: 多くの CLI コマンドは互換ですが、内部実装や一部オプションは異なります。Docker Compose の利用など一部ツールは追加設定が必要です。

Q: rootless でポート 80 を使えますか?

A: 標準ユーザーでは 1024 未満のポートバインドが制限されます。回避策としてリバースプロキシやポートフォワーディングを利用してください。

Q: イメージを完全に削除するには?

A: コンテナを削除してから podman rmi を実行します。依存するタグやコンテナがある場合は削除できません。

参考ガイド

詳しいチュートリアルや応用的な使い方は次の公式ドキュメントやガイドを参照してください:

  • Getting Started with Podman: Manage Images, Containers and Volumes

結論

この記事では Debian 11 への Podman インストール手順と基本的な使い方、運用チェックリスト、トラブルシューティング、セキュリティ上の注意点をまとめました。Podman は Docker とよく似た UX を提供しつつ、デーモン不要や rootless の利点があるため、要件に応じて Docker の代替として有力な選択肢になります。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Debian 11 に Podman をインストールして使う
コンテナ

Debian 11 に Podman をインストールして使う

Apt-pinning入門:Debianで複数リポジトリを管理
Linux

Apt-pinning入門:Debianで複数リポジトリを管理

OptiScalerでFSR 4を全対応ゲームに導入する方法
ゲーム

OptiScalerでFSR 4を全対応ゲームに導入する方法

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法
ネットワーク

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法

AndroidでSDカードのインストールエラーを修正する方法
トラブルシューティング

AndroidでSDカードのインストールエラーを修正する方法

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定
Linux ネットワーク

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定