はじめに
Podman は仮想化環境を構築するためのコンテナ管理ツールです。Red Hat 社 によって開発され、Apache ライセンス v2.0 の下、オープンソースソフトウェア (OSS) として 公開 されています。Go 言語 で実装されています。
クロスプラットフォームに対応しており、Windows / Mac / Linux いずれにもインストールできます。 これは大きな利点です。というのも、仮想マシンの定義、あるいは複数の仮想マシンを束ねる Pod (Kubernetes) の定義を配布することで、異なる端末上で同じ条件下での開発が可能になるからです。
コンテナ管理ツールと言うと Docker を思い浮かべる方も多いのでは無いでしょうか。
Docker は非常に広く使われているすばらしいソフトウェアです。Podman はこちらとの互換性を意識して開発されています。特に v3 以降は高い互換性を備えるようになりました。既存の Dockerfile
や Docker Hub のイメージを利用することも可能です。そのため Docker からの移行を試みる場合でも、ハードルはそんなに高く無いかもしれません。
Windows にインストールする場合、WSL (Windows Subsystem for Linux) v2 を有効化する必要があるのですが、ありがたいことにその設定を半自動化してくれています。
Windows 10 に Podman をインストールする流れをご紹介します。
環境
- OS: Windows 10
- 仮想化: Podman 4.3.1
チュートリアル
パッケージ・マネージャーのインストール (利用する場合のみ)
私は Scoop を使いました。Windows のサード・パーティ製のパッケージ・マネージャーです。クリーンなインストールとアンインストールが可能です。
代わりに winget を使うことも可能です。Podman のパッケージが公式から 配布 されています。
Podman のインストール
Scoop の場合、下記を実行します:
$ scoop install podman
出力は以下の通りでした:
Installing 'podman' (4.3.1) [64bit] from main bucket
podman-4.3.1-setup.exe (30.3 MB) [============================================================================] 100%
Checking hash of podman-4.3.1-setup.exe ... ok.
Running installer script...
Linking ~\scoop\apps\podman\current => ~\scoop\apps\podman\4.3.1
Creating shim for 'podman'.
'podman' (4.3.1) was installed successfully!
winget の場合 winget install -e --id RedHat.Podman
を実行します。
パッケージ・マネージャーが無い場合、Windows 用インストーラーを使うことも可能です。Github の リリースページ からダウンロードできます。podman-#.#.#-setup.exe
という名前のファイルです。
Podman 向け OS 初期化
Podman のインストールができたら、初期化を行います。 本来は Podman の仮想マシンの初期化ですが、WSL v2 の準備ができていない場合、その初期環境構築から実施してくれます。
下記コマンドを実行します:
$ podman machine init
まず Windows Defender ファイアウォール の警告が表示されます。Podman のネットワーク通信の許可について確認されます。
以下は WSL v2 の準備ができていない場合です。
WSL がインストールされていないことを検出した旨が表示されます。「OK」を押すとインストールが始まります。
Windows の「ユーザー アカウント制御」の確認が表示されます。以下は表示内容です。
ユーザー アカウント制御
このアプリがデバイスに変更を加えることを許可しますか?
podman.exe
確認済みの発行元: Red Hat, Inc
ファイルの入手先: このコンピューター上のハード ドライブ
詳細を表示
はい いいえ
「はい」を押して進みます。
以下のようにインストールが開始されます。
推奨ターミナルに関する補足
コマンドプロンプト が標準になっている場合、上のように文字化けします。 公式チュートリアルで Windows ターミナル を使うと便利だと 推奨されています。(無くても、致命的な問題は起こりません。) Windows Store からインストールできます。
さて、インストールが進むと、再起動の確認メッセージが表示されます:
「OK」を押すと端末が再起動されます。
再起動した OS にサインインします。1-2 分、待ちます。(Windows の遅延スタートアップ項目が完了した後に、WSL のインストールの続きが始まるためです。)
コマンドプロンプトが自動で 3 回起動して終了します。その後に PowerShell が起動されます:
それが終わると、次はコマンドプロンプトが起動されます:
それが終わると、ふたたび podman.exe
に関する「ユーザー アカウント制御」の確認メッセージが表示されます。
「はい」を押して進みます。
すると今度は「Windows サービスのホスト プロセス」に関する「ユーザー アカウント制御」確認が表示されます:
ユーザー アカウント制御
このアプリがデバイスに変更を加えることを許可しますか?
Windows サービスのホスト プロセス
確認済みの発行元: Microsoft Windows
詳細を表示
はい いいえ
こちらも「はい」を押します。
Podman インストールの完了
WSL のカーネル・インストールが行われ、完了します。
おわりに
Podman の準備ができました !!
podman machine start
というコマンドを実行すると、Podman の仮想マシンが動き始めます。(初回実行時だけ初期化処理も動きます。) そこからは Docker とほぼ同じコマンド体系でコンテナやコンテナイメージを操作することができます。
Podman にはセキュリティや安定性の観点からの配慮が施されています。まず Podman はデーモンを使用しません。そのため仮想マシン上のあるコンテナが他のコンテナに悪影響を及ぼすことが、起こりにくくなっています。またルート権限を必要としないコンテナがデフォルトになっています。そのためコンテナの実行がより安全に行えるようになっています。
Podman で再利用性と独立性の高い環境を築いて、開発生産性の向上や運用環境の改善につなげられると良いですね。