22. Ubuntu Server で Podman を始める:完全ガイド

はじめに

Podman 入門では、Docker の安全で rootless な代替手段として設計された、モダンで軽量なコンテナエンジンを紹介します。Docker とは異なり、Podman は中央デーモンを必要とせず、コンテナを管理する開発者やシステム管理者にセキュリティと柔軟性の向上をもたらします。rootless アーキテクチャは、権限昇格を最小限に抑えることが優先される環境で特に魅力的です。

このガイドでは、Ubuntu Server 22.04 に Podman をインストールして使用するための基本事項を解説します。また、短縮名(例:nginx)を使ったコンテナイメージのプルに関する一般的な問題を取り上げ、Podman をスムーズに使い始めるための明確な解決策を示します。

Podman 入門

過去の記事:

01. Ubuntu Server 入門 – SysOSX: AI & Cloud

02. 初めての Ubuntu Server のセットアップ方法:初心者向けガイド – SysOSX: AI & Cloud

03.Ubuntu Server 向け Linux コマンドラインの習得 – SysOSX: AI & Cloud

04. Ubuntu Server でのユーザーと権限の管理:包括的ガイド – SysOSX: AI & Cloud

05. Ubuntu Server のネットワーク基礎:包括的ガイド – SysOSX: AI & Cloud

06. Ubuntu Server でのソフトウェアのインストールと管理:完全ガイド – SysOSX: AI & Cloud

07.Ubuntu Server のパッチ適用と更新:包括的ガイド – SysOSX: AI & Cloud

08. Ubuntu Server のセキュリティ:強化と保護の実践手順 – SysOSX: AI & Cloud

09. Ubuntu Server の監査とロギング

10. Ubuntu Server のシステム監視ツール:包括的ガイド – SysOSX: AI & Cloud

11. Ubuntu Server の集中ロギング:必読ガイド – SysOSX: AI & Cloud

12. Ubuntu Server の監査とコンプライアンス:ベストプラクティス – SysOSX: AI & Cloud

13.ホスティングと Web アプリケーション向け Ubuntu Server のセットアップ:究極ガイド – SysOSX: AI & Cloud

14. 1 台の Ubuntu Server で複数の Web サイトをホストする:役立つヒント – SysOSX: AI & Cloud

15. Ubuntu Server でのストレージとディスクの管理:シンプルガイド – SysOSX: AI & Cloud

16. Ubuntu Server でのファイル共有サービスのセットアップ:完全ガイド – SysOSX: AI & Cloud

17. Ubuntu でのセキュアなデータベースサーバーのセットアップ:MySQL 対 MariaDB – SysOSX: AI & Cloud

18. Ubuntu Server での LVM の設定と使用方法:包括的ガイド – SysOSX: AI & Cloud

19. KVM による仮想化入門:Ubuntu Server 初心者向けガイド – SysOSX: AI & Cloud

20. Ubuntu Server への Docker のインストール方法:コンテナ化のステップバイステップガイド – SysOSX: AI & Cloud

21. LXD 入門:コンテナを簡単にインストール + チートシート – SysOSX: AI & Cloud



Podman とは?なぜ使うのか?

Podman は、セキュリティと柔軟性を重視してコンテナを構築、実行、管理するために設計されたコンテナエンジンです。Podman が人気を集めている理由は次のとおりです:

  • デーモンレス アーキテクチャ:Podman はバックグラウンドサービスに依存しません(Docker のデーモンベースのモデルとは異なります)。そのため、攻撃対象領域が減り、セキュリティが向上します。
  • Rootless コンテナ:非 root ユーザーとしてコンテナを実行し、セキュリティをさらに強化します。
  • Docker 互換コマンド:Podman の CLI は Docker と互換性があるように設計されており、次のようなコマンドpodman pullまたはpodman runをシームレスに使用できます。
  • systemd 統合:コンテナをシステムサービスとして簡単に管理できます。

ステップ 1:Ubuntu Server 22.04 に Podman をインストールする

1.1 システムを更新する

Podman をインストールする前に、互換性の問題を避けるため、システムが更新されていることを確認します:

sudo apt update && sudo apt upgrade -y  

1.2 Podman をインストールする

Podman は Ubuntu のデフォルトリポジトリに含まれているため、次のパッケージマネージャーを使って直接インストールできます:apt。

sudo apt install podman -y  

1.3 インストールを確認する

インストールが完了したら、インストールされている Podman のバージョンを確認し、使用できる状態であることを確認します:

podman --version  

出力例:

podman version 3.4.4


ステップ 2:最初の Podman コンテナを実行する

2.1 コンテナイメージをプルする

Podman は、アプリケーションを実行するためにコンテナイメージを使います。まず、軽量な Alpine Linux イメージをプルします:

podman pull alpine  

2.2 コンテナを実行する

Alpine イメージを使ってコンテナを実行します:

podman run --rm -it alpine sh  

このコマンドは、Alpine コンテナ内で対話型シェルを起動します。次のような基本的なコマンドを試すことができます:

echo "Hello from Podman!"  

2.3 コンテナを終了する

コンテナを終了するには、次のように入力します:

exit  


ステップ 3:Podman の短縮名解決を理解する

短縮名の問題

短縮名(例:nginx)を使ってコンテナイメージをプルするとき、Podman はイメージを検索するレジストリを知る必要があります。適切に設定されていない場合、次のエラーが発生することがあります:

Error: short-name "nginx" did not resolve to an alias and no unqualified-search registries are defined in "/etc/containers/registries.conf"  

なぜこのエラーが発生するのか?

Podman には、イメージを検索するコンテナレジストリを定義するための設定ファイル(registries.conf)が必要です。このファイルがない場合や、正しく設定されていない場合、Podman は次のような短縮名を解決できません:nginx。


ステップ 4:短縮名解決エラーを修正する

4.1 registries.conf ファイルの場所を確認または作成する

ファイルregistries.confは通常、次の場所にあります:/etc/containers/registries.conf。ファイルが存在するか確認します:

ls /etc/containers/registries.conf  

存在しない場合は、作成します:

sudo nano /etc/containers/registries.conf  

4.2 デフォルトのレジストリ設定を追加する

次の設定をファイルに追加します:

[registries.search]  
registries = ['docker.io', 'quay.io']  

  • docker.io:最も一般的に使われるコンテナレジストリである Docker Hub を指します。
  • quay.io:もう 1 つの人気のあるコンテナレジストリです。

ファイルを保存して終了します(Ctrl+O、次にCtrl+Xを押します。nano を使う場合)。

4.3 プルコマンドを再試行する

レジストリ設定が完了したら、次のイメージを再度プルしてみます:nginx。

podman pull nginx  

Podman は、短縮名nginx をdocker.io/library/nginxに解決し、イメージを正常にプルできるようになります。


ステップ 5:非 root ユーザーとしてコンテナを実行する

Podman の際立った特徴の 1 つは、root 権限を必要とせずにコンテナを実行できることです。設定方法は次のとおりです:

5.1 非 root ユーザーに切り替える

通常のユーザー(例:uadmin)としてログインします:

su - uadmin  

非 root ユーザーでも Podman が動作することを確認します:

podman info  

5.2 非 root ユーザーの権限問題を修正する

非 root ユーザーとして Podman を実行したときにpermission deniedエラーが発生した場合は、ユーザーのホームディレクトリの所有者が正しくないことが原因である可能性があります。

ホームディレクトリの所有者を確認します:

ls -ld /home/uadmin  

ディレクトリの所有者がrootである場合は、次のように修正します:

sudo chown -R uadmin:uadmin /home/uadmin  

必要な.localディレクトリを手動で作成します:

mkdir -p /home/uadmin/.local/share/containers  
sudo chown -R uadmin:uadmin /home/uadmin/.local  

Podman を再度テストします:

podman info  

これで、Podman が非 root ユーザーとして正常に動作するはずです。


ステップ 6:初心者向けの便利な Podman コマンド

使い始めるのに役立つ、重要な Podman コマンドをいくつか紹介します:

  • 実行中のコンテナを一覧表示する:
podman ps
  • すべてのコンテナを一覧表示する(停止中のものを含む):
podman ps -a
  • 実行中のコンテナを停止する:
podman stop <container-id>
  • コンテナを削除する:
podman rm <container-id>
  • イメージを削除する:
podman rmi <image-name>

参考ドキュメント:
Podman 入門 | Podman


    まとめ

    Podman は、Ubuntu Server 22.04 に最適な、安全で軽量かつ柔軟なコンテナエンジンです。このガイドでは、次の内容を解説しました:

    • Podman のインストール。
    • 最初のコンテナの実行。
    • 短縮名解決エラーの修正。
    • 非 root ユーザーとしてのコンテナの実行。

    これらの手順に従うことで、Podman を探索し、コンテナを効果的に管理するための確かな基盤ができました。rootless 機能と Docker 互換の CLI を備えた Podman は、現代のコンテナ化ワークフローに優れたツールです。

    お楽しみに:
    次の記事では、次のトピックについて解説します: クラウドプラットフォームへの Ubuntu Server のデプロイ 。GCP、AWS、Azure などが対象です。

    コメントを残す