はじめに
こんにちは、コンテナ勉強中の新入社員です。
最近Docker Desktopが重くないですか?Podman Desktopへの移行してみませんか?移行するのに色々厄介ごとあるんじゃないのかと思う方もいらっしゃるでしょうが、実際にはdockerコマンドをpodmanに置き換えるだけで、ほとんどの操作が問題なく実行できるんです。この記事では、Podman Desktopを使って docker-compose.yml
を実行し、従来のDocker Desktopと比較した使用感をレポートします。PPodmanに興味がある方はぜひ参考にしてください。
Podman Desktopのインストール
Podman DesktopはmacOSでは2種類のインストール方法があります。
- dmgファイルをダウンロードしてインストール
- brewを使ってインストール
brew install podman-desktop
詳しくはこちらをご確認ください
今回はdmgファイルを使ってinstallしてみました。
インストールを確認すると
podman -v
podman version 5.2.2
無事インストールできています。
docker compose
今回はdocker composeのクイックスタートの例を使って、ファイルを作成しました。
ディレクトリ構成はこのようになっています。
/app
│ docker-compose.yml
│ Dockerfile
│ app.py
│ requirements.txt
各ファイルの中身は
docker-compose.yml
services:
web:
build: .
ports:
- "8000:5000"
redis:
image: "redis:alpine"
app.py
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host="redis", port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr("hits")
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route("/")
def hello():
count = get_hit_count()
return "Hello World! I have been seen {} times.\n".format(count)
requirements.txt
flask
redis
Dockerfile
# syntax=docker/dockerfile:1
FROM python:3.10-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run", "--debug"]
これらのファイルを使って、composeします。
コマンドはdocker composeをpodman composeに置き換えるだけ
podman compose -f docker-compose.yml up -d
podman composeの間のハイフン(-)が必要ないことに注意してください。
私の環境では軌道まで数十秒ほどでした。
podman Desktopの画面で確認するとちゃんと起動しています。
作成したコンテナに接続
これまでVS codeでDocker Desktopを使って、コンテナに入る場合は拡張機能のDockerをinstallするだけでしたが、podmanでは設定を少し変える必要があります。
- Dockerの拡張機能設定をクリック
- 検索ワードにdockerpathと入力
- Dev>Containers: Docker Pathに"podman"と入力
そして、リモートエクスプローラーで開発コンテナを選択すると先ほど作成したコンテナが表示されていることがわかります。
ウィンドウボタンをクリックすると接続されることを確認しました!
まとめ
Podman Desktopへの移行は、予想以上にスムーズで、docker-composeの操作も問題なく行えました。Docker Desktopに比べてPodmanは軽量で、特に複数のコンテナを扱う際の動作が軽快であると感じました。今回の検証では簡単なアプリケーションで試しましたが、次回はより重たいアプリケーションでパフォーマンスの違いを検証してみたいと思います。Podmanに興味を持っている方やDocker Desktopのパフォーマンスに不満を感じている方には、一度Podman Desktopを試してみることをおすすめします。