🦭

今更 Docker Desktop から Podman Desktop に移行してみた

に公開

はじめに

今更ですが、Docker Desktop の有料化が開始されて数年経ちましたが、移行先として Podman Desktop を試してみました。

https://podman-desktop.io/

因みに、Docker Desktop の有料化に関する記載は以下にあります。執筆時点
https://www.docker.com/legal/docker-subscription-service-agreement/
4.2 Specific License Limitations for Standalone use of Docker Desktop. に記載されていました。要約すると、

  • 非営利のオープンソースプロジェクトでの使用
  • 従業員数 250 人未満かつ年間売上高 $10,000,000(または現地通貨相当額)未満の営利事業での使用

のようです。今のところ無料使用範囲に該当していますが、今から Podman Desktop を使って Docker Desktop なしでいけるか試してみようと思いました。

試そうと思ったきっかけ

この記事を何気に見ていて試そうと思いました。
https://zenn.dev/ttnt_1013/articles/f36e251a0cd24e

PC 環境

  • Ubuntu 24.04.2
  • 自作 PC
  • Docker Desktop インストール済み
  • Docker Compose 等の定義ファイルは作成済み

インストール手順

ダウンロード

https://podman-desktop.io/downloads/linux
メインは Flatpak 版となっています。

flatpak install flathub io.podman_desktop.PodmanDesktop

Podman Desktop を起動

Ubuntu ならメニューから起動
PodmanCompose にチェックを入れ、Start onboarding をクリック

Next をクリック

Podman のインストール

installation instructions のリンクをクリック

以下のリンクページが表示されます。
https://podman.io/docs/installation#installing-on-linux
Ubuntu の記載箇所のコマンドを実行

# Ubuntu 20.10 and newer
sudo apt-get update
sudo apt-get -y install podman

Podman Desktop の設定つづき

基本的には、Next で次に進むだけです。
Next をクリック

Next をクリック

ライブラリのダウンロードが始まる。

ダウンロード完了。
Next をクリック

Next をクリック

ダッシュボードが表示される

コンテナの起動(Compose)

podman compose up -d

公式のドキュメントには、podman compose コマンドで起動するように記載されていましたが、筆者の環境では起動しなかったので、以下の設定をしました

2025.4.25 追記

どうも、Preferences > Docker CompatibilityEnabled にすればよかったようです。この設定を有効にすると、以前環境変数を定義していた内容が Podman Desktop の設定項目として増えたので。

以前、設定していた内容
export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
設定せずに実行した時のエラーメッセージ
$ podman compose up mysql -d
>>>> Executing external compose provider "/usr/local/bin/docker-compose". Please refer to the documentation for details. <<<<

unable to get image 'mysql': Cannot connect to the Docker daemon at unix:///run/user/1000/podman/podman.sock. Is the docker daemon running?
Error: executing /usr/local/bin/docker-compose up mysql -d: exit status 1

エラーメッセージからもわかる通り、裏では docker-compose を実行しています。

実行結果は以下の感じです。

$ podman compose up -d
>>>> Executing external compose provider "/usr/local/bin/docker-compose". Please refer to the documentation for details. <<<<

[+] Running 12/12
 ✔ mysql Pulled

[+] Running 2/2
 ✔ Network sample-project_default  Created          0.0s 
 ✔ Container sample-mysql          Started          0.8s

コンテナの起動に使用した定義内容
name: sample-project

services:
  mysql:
    image: mysql
    container_name: sample-mysql
    platform: linux/amd64
    environment:
      MYSQL_ROOT_PASSWORD: [ルートのパスワード]
      MYSQL_DATABASE: [データベース名]
      MYSQL_USER: [ユーザ名]
      MYSQL_PASSWORD: [パスワード]
      TZ: UTC
    ports:
      - 3306:3306

まとめ

Mac や Windows 環境の場合は、Podman machine の作成もいるみたいですが、Linux は不要なのでお手軽に試せるんじゃないかと思いました!
https://podman-desktop.io/docs/podman/creating-a-podman-machine
まだコンテナを作成しただけですが、引き続き、既存の Docker コンテナを移行したり色々試して見ようと思います!

最後のまとめは、Cody 🤖 にお願いしました。🙏
https://zenn.dev/tamura_h_d/articles/3341604e04f438
Podman Desktop は、Docker Desktop の代替として十分な機能を持ち、以下の特徴があります:

  • rootless 実行によるセキュリティ向上
  • Docker/Docker Compose との高い互換性
  • 直感的な GUI でコンテナ管理が容易
  • オープンソースで無料利用可能

個人開発から企業利用まで、コンテナ開発環境を探している方は、ぜひ Podman Desktop を選択肢の一つとして検討してみてください。Docker Desktop からの移行も比較的スムーズで、既存の知識やワークフローをそのまま活かせる点も魅力です。

追記(2025.4.20)

既存の Docker コンテナを移行していて少し気になった事がありました。

  • command で定義していた内容が実行されていない
    • コンテナの定義内容
        sqlserver:
          image: mcr.microsoft.com/mssql/server:2022-latest
          container_name: sample-sqlserver
          ports:
            - 1433:1433
          environment:
            - ACCEPT_EULA=Y
            - MSSQL_SA_PASSWORD=[パスワード]
          volumes:
            - './config:/docker-initdb.d'
          command:
            [
              '/bin/bash',
              '-c',
              'chmod +x /docker-initdb.d/entrypoint.sh && /docker-initdb.d/entrypoint.sh & /opt/mssql/bin/sqlservr',
            ]
      
  • SQLServer のデータを DBeaver から CSV インポートにやたら時間がかかる

という事が筆者の環境ではありました。いずれも Docker コンテナでは問題ありませんでした。
また調べてみようと思います。

Discussion