なぜ私は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(画面操作)で行う
- Imagesタブに移動し、Pull an imageを選択します。
docker.io/library/nginx:latestと入力し、ダウンロードを待ちます。- 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週間ほど使ってみれば、パフォーマンスの明らかな違いを実感できるはずです。

