今更 Docker Desktop から Podman Desktop に移行してみた
はじめに
今更ですが、Docker Desktop の有料化が開始されて数年経ちましたが、移行先として Podman Desktop を試してみました。
因みに、Docker Desktop の有料化に関する記載は以下にあります。執筆時点
4.2 Specific License Limitations for Standalone use of Docker Desktop. に記載されていました。要約すると、- 非営利のオープンソースプロジェクトでの使用
- 従業員数 250 人未満かつ年間売上高 $10,000,000(または現地通貨相当額)未満の営利事業での使用
のようです。今のところ無料使用範囲に該当していますが、今から Podman Desktop を使って Docker Desktop なしでいけるか試してみようと思いました。
試そうと思ったきっかけ
この記事を何気に見ていて試そうと思いました。
PC 環境
- Ubuntu 24.04.2
- 自作 PC
- Docker Desktop インストール済み
- Docker Compose 等の定義ファイルは作成済み
インストール手順
ダウンロード
メインは Flatpak 版となっています。
flatpak install flathub io.podman_desktop.PodmanDesktop
Podman Desktop を起動
Ubuntu ならメニューから起動
Podman
と Compose
にチェックを入れ、Start onboarding
をクリック
Next
をクリック
Podman のインストール
installation instructions
のリンクをクリック
以下のリンクページが表示されます。
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 Compatibility を Enabled
にすればよかったようです。この設定を有効にすると、以前環境変数を定義していた内容が 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 は不要なのでお手軽に試せるんじゃないかと思いました!
まだコンテナを作成しただけですが、引き続き、既存の Docker コンテナを移行したり色々試して見ようと思います!
最後のまとめは、Cody
🤖 にお願いしました。🙏
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