Podman Desktop:Docker Desktopに代わる、スムーズで安全かつ軽量なソリューション

Docker tutorial - IT technology blog
Docker tutorial - IT technology blog

なぜ私はDocker Desktopをやめたのか?

大企業で働いているなら、Docker Desktopのライセンス問題は避けて通れない悩みでしょう。しかし、ライセンス料は話の半分に過ぎません。本当にストレスを感じていたのは、Windows上でのリソース消費量です。Nginxと軽量なデータベースを1つ動かしているだけでRAMを3GBも占有され、CPUファンが激しく回ることも珍しくありませんでした。

昨年、クライアント向けにマイクロサービスを構築した際、開発チーム全員をPodman Desktopに移行させてみました。結果は非常に印象的で、CPUとRAMの使用量が以前より約35%削減されました。さらに重要なのは、Podmanがrootless(管理者権限不要)モードで動作することです。これにより、コンテナからホストマシンへの特権昇格攻撃のリスクを防ぎ、システムのセキュリティが格段に向上しました。

Dockerと比較したPodmanの「価値ある」3つの違い

インストールを始める前に、なぜPodmanがトレンドになっているのかを理解しておく必要があります:

  • Daemonlessアーキテクチャ: Dockerはすべてを管理するためにバックグラウンドプロセス(Docker Daemon)に依存しています。このデーモンがフリーズすると、コンテナ群もダウンしてしまいます。一方, Podmanは独立したプロセスとして直接実行されるため、システムがより安定し、軽量になります。
  • デフォルトでRootless: 一般ユーザーの権限でコンテナを実行できます。万が一コンテナが乗っ取られても、攻撃者はそのユーザーの権限内に閉じ込められ、OSのカーネルを破壊することはできません。
  • Podの概念: その名の通り(Pod-man)、このツールはKubernetesと同様に複数のコンテナを「Pod」としてグループ化することをサポートしています。ローカル環境でK8sの構成をテストするのに非常に便利です。

Podman Desktopのインストール詳細ガイド

1. Windowsへのインストール(WSL2を使用)

本質的に、Windows上のPodmanは動作させるためにLinux環境を必要とします。現在はWSL2(Windows Subsystem for Linux)が最適な選択肢です。

ステップ 1: Podman Desktopの公式サイトから.exeインストーラーをダウンロードします。UIのインストールは非常にシンプルで、「Next」ボタンを押していくだけで完了します。

ステップ 2: アプリケーションを最初に開く際、「Podman Machine」を初期化する必要があります。これは実質的にWSL2内で動作する超軽量な仮想マシンです。

# コマンドラインを使いたい場合は、以下のコマンドを入力してください:
podman machine init --cpus 2 --memory 2048
podman machine start

実体験からのアドバイス: RAMをデフォルト設定のままにしないでください。もしPCのメモリが16GBあるなら、重いコンテナを複数動かしてもカクつかないよう、Podmanに約4GBを割り当てることをお勧めします。

2. Linuxへのインストール(Ubuntu/Debian)

Linuxの場合、Podmanは中間仮想マシンを必要とせずネイティブに動作するため、まさに「水を得た魚」のようなパフォーマンスを発揮します。

sudo apt update
sudo apt install -y podman

直感的に管理するために、Podman DesktopのFlatpak版もインストールすることをお勧めします。数クリックでコンテナのログやリソースを確認できるようになります。

実践:最初のコンテナを動かしてみよう

Podman Desktopのインターフェースは非常にモダンで、Docker Desktopに似ています。10分もあれば慣れることができるでしょう。

方法1:GUI(画面操作)で行う

  1. Imagesタブに移動し、Pull an imageを選択します。
  2. docker.io/library/nginx:latestと入力し、ダウンロードを待ちます。
  3. Playボタンを押します。Port Mappingセクションで、ホストのポート8080をコンテナのポート80にマッピングします。

方法2:CLI(コマンドライン)を使用する

PodmanはDocker APIと完全に互換性があるため、使い慣れたコマンドを使用できます。私は素早く入力できるようにエイリアスを設定しています:

# nginxコンテナを素早く起動
podman run -d --name my-web -p 8080:80 nginx

# ステータスを確認
podman ps

ブラウザでlocalhost:8080にアクセスし、Nginxのウェルカムページが表示されれば成功です!

実践テクニック:Podmanを「擬似」Dockerにする

古いスクリプトやJenkinsのようなツールは、依然としてデフォルトでdockerコマンドを呼び出します。手動でコードを修正しなくて済むように、.bashrcまたは.zshrcファイルに以下の行を追加しましょう:

alias docker=podman

また、Podman DesktopのSettings(設定)で「Docker Compatibility」機能を有効にしてください。これにより、Podmanのソケットから/var/run/docker.sockへのシンボリックリンクが作成されます。そのおかげで、VS Codeの拡張機能やTestcontainersなどは、変更に気づくことなくスムーズに動作し続けます。

「非常に価値のある」機能:Pod管理

コンテナをバラバラに実行する代わりに、Podmanではそれらをひとまとめにできます。例えば、私はよくFrontend + Backend + Redisで構成されるPodを実行しています。

# 共通のPodを作成
podman pod create --name my-app-stack -p 3000:3000

# コンテナをPodに追加
podman run -d --pod my-app-stack --name frontend-app my-frontend-image

同じPod内にある場合、コンテナ同士はlocalhost経由で通信できます。これは、ローカルマシンで標準的なKubernetes環境をシミュレートする最も効率的な方法です。

おわりに

Podman Desktopへの移行は、単なるコスト削減のためだけではありません。これはリソースを最適化し、PCのセキュリティを強化するための賢明なステップです。もしDockerのせいで動作が重くなっているなら、今すぐアンインストールしてPodmanを試してみてください。1週間ほど使ってみれば、パフォーマンスの明らかな違いを実感できるはずです。

Share: