Docker Desktopの代替サービスを探す旅。Podman Desktopを試してみる。

# はじめに
[GoQSystem](https://goqsystem.com/)では開発・本番環境問わず多くのプロジェクトでDockerを利用しています。
2022年2月からDocker Desktopが有料サービスになりました。（※2021年9月に有料化が開始され、無料で使える猶予期間が終了しました。）
弊社は有料となる条件に該当しないため、無料で使い続けることができていますが、無料・有料に関わらず事業として開発を行なっている以上は代替案を持っておくべきだと思うので、今回はPodman Desktopを試していこうと思います。

※ 都合上、使用している画像の一部を隠しています。

# [Podman Desktop](https://podman-desktop.io/)とは
![podman-logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/d3eb092e-1a12-75b1-3d9d-1687a3f31af0.png)
RedHat社から2022年10月に[発表](https://developers.redhat.com/articles/2022/10/24/podman-expands-desktop#)されました。
Podman上で起動しているContainerおよびPodをGUIから操作できることを目的としています。
[Podman](https://github.com/containers/podman)はDocker互換のコンテナエンジンです。

Docker互換ではあるものの、Podmanという名前から分かるようにDockerというよりもKubernetesよりな気がします。

# 参考にした記事
https://qiita.com/hisato_imanishi/items/cdfd43165dae4a59d68e

https://dev.classmethod.jp/articles/try-podman-desktop/

https://zenn.dev/yoshii0110/articles/5b60b30c991152

# 実行環境
```
マシン：MacBook Pro （13インチ, 2020）（Apple M1, メモリ16GBモデル）
OS：macOS Ventura 13.0.1
```

# インストール
[公式サイト](https://podman-desktop.io/)からインストールするか、`brew`でインストールすることができます。
今回はbrewでインストールを行いました。
```
brew install podman-desktop
```
Podman Desktopを使用するにはPodmanがインストールされていることがMUSTなようですが、以下の結果から`podman-desktop`をインストールする過程で`podman`もインストールされていることがわかります。
```
==> Fetching podman
==> Downloading https://ghcr.io/v2/homebrew/core/podman/manifests/4.3.1
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/podman/blobs/sha256:f65eb8652f1ee79a37bcc3c7d9d75719c13d7aa3b2b925d389ee2689451a7d40
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:f65eb8652f1ee79a37bcc3c7d9d75719c13d7aa3b2b925d389ee2689451a7d
######################################################################## 100.0%
==> Installing podman
==> Pouring podman--4.3.1.arm64_ventura.bottle.tar.gz
🍺  /opt/homebrew/Cellar/podman/4.3.1: 185 files, 47.6MB
==> Installing Cask podman-desktop
==> Moving App 'Podman Desktop.app' to '/Applications/Podman Desktop.app'
🍺  podman-desktop was successfully installed!
```

# 起動
Macのアプリケーションとしてインストールされているので、LaunchpadやSpotlightからPodman Desktopを探して起動します。

起動するとこのような画面が表示されます。
![スクリーンショット 2022-12-18 20.26.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/7e0345e2-1d72-0bec-c803-9635c122b861.png)

Podmanを使用したことがなければ、`Initialize Podman`のトグルボタンが表示されます。Onにすると、Podmanの初期設定が開始されます。
@hisato_imanishiさんの[記事](https://qiita.com/hisato_imanishi/items/cdfd43165dae4a59d68e)にあるように、私も`Intializing...Please Wait...`の文字が表示されてから一向に初期設定が完了しなかったので、一旦終了してPodman Desktopを再度起動すると以下の画面のようにPodmanが起動しました。
![スクリーンショット 2022-12-18 22.26.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/d052acc1-c186-309e-1ba3-ccf34bd41fb5.png)


**Images**を確認してみます。
![スクリーンショット 2022-12-18 20.29.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/21f80fba-cc08-3b11-0594-4f6e454744f8.png)

**Containers**を確認してみます。
![スクリーンショット 2022-12-18 20.29.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/392fad8f-95e1-b12c-80b5-4567028a95a9.png)

**Volumes**を確認してみます。
![スクリーンショット 2022-12-18 20.29.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/102e78ce-57f5-1ee1-917d-1af1ffac39f3.png)

これまでDocker/Docker Desktopで作成したContainers、Images、Volumesを確認することができました。

# Containerを起動する
Docker Desktopと同様にボタン1つ（以下画像の赤枠）で起動できます。停止するときはまたボタンを押せば停止します。
![スクリーンショット 2022-12-18 20.43.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/808b5e8b-9032-e688-61ba-7a2cc31a7ebf.png)
Docker Desktopと異なるのはcomposeで定義されているサービスを起動することができず、サービスで定義されているコンテナを1つづつ起動する必要があります。

起動すると画面の赤枠部が緑色に変わります。
![スクリーンショット 2022-12-18 20.47.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/a04c876a-44c1-b4b1-ae4d-7766b5043fd4.png)

Docker Desktopと同様にコンテナのログを見ることもできますし、Terminalからコンテナ内で操作を行うことができます。Docker Desktopと異なるのはInspectがより詳細でJSON形式であること、Docker DesktopがStatusであるところがDetailsになっているくらいです。コンテナ環境を設定・チューニングするエンジニア以外は気にならないでしょう。
![スクリーンショット 2022-12-18 21.26.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/3cad21c0-c7a2-67e8-b644-3d6ab8e0386b.png)

# ImageからContainerを起動し停止する
起動したいイメージをマウスオーバーすると、Containersと同じボタンが表示（以下画像の赤枠）されるのでクリックします。
![スクリーンショット 2022-12-18 20.54.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/9f10b559-b9eb-513a-6d45-1d18ac1da694.png)

ボタンをクリックすると以下のような画面が表示されます。
必要な情報を入力、`Start Container`ボタンをクリックします。
今回はコンテナ名とポートのみでしたが、環境変数やVolumesを設定することができます。
![スクリーンショット 2022-12-18 20.54.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/adddccb6-fe17-16e4-1c2c-c4d0de8d66ec.png)

コンテナを起動することができました。
![スクリーンショット 2022-12-18 20.59.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/1ea34d18-033b-ff73-9685-a80e3d45ec23.png)

必要に応じてより詳細な設定を行うこともできます。
AdvancedではTTYの付与など、
![スクリーンショット 2022-12-18 21.31.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/f61647c1-498b-623a-fa7c-844acd997e7c.png)
Networkingではコンテナホスト名やネットワークモードの切り替え、
![スクリーンショット 2022-12-18 21.31.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/0d998351-4aaf-44c3-6f3d-e657fbb2c794.png)
Securityではコンテナをread-onlyモードに設定するなどが行えます。（Docker Desktopにつけて欲しい）
![スクリーンショット 2022-12-18 21.31.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/765794/b8a578f8-f855-aecb-d9af-92d1eb010385.png)

# まとめ
時間があれば「**Podman**」自体を触りたいところでしたが今回はここまでにしておきます。
所感としてはDocker互換というだけあって違和感なくDocker Container/Imageを操作することができました。（Docker Desktopより詳細設定が見える、設定できるようになっている印象）
巷で人気が出てきている「**Rancher Desktop**」はDocker Desktopのunistallが必要？という情報もあり、その辺りの煩わしさがなく、brewコマンドひとつでインストールが完了して基本的な操作を行うことができたのはとても良かったです。

Docker Desktop代替サービスとしては「**Rancher Desktop**」の評価が高い印象ですし、AWSが発表したOSSの「**Finch**」も気になるところです。次回以降、この2つのサービスを試していこうと思います。

# 最後に
### **GoQSystemでは一緒に働いてくれる仲間を募集中です！**
ご興味がある方は以下リンクよりご確認ください。

https://goqsystem.recruit.site?qiita=60fd98eb564c9919ad4d