0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DockerからPodmanへの移行:Podmanでdocker-composeを試してみた(for VS Code)

Posted at

はじめに

こんにちは、コンテナ勉強中の新入社員です。
最近Docker Desktopが重くないですか?Podman Desktopへの移行してみませんか?移行するのに色々厄介ごとあるんじゃないのかと思う方もいらっしゃるでしょうが、実際にはdockerコマンドをpodmanに置き換えるだけで、ほとんどの操作が問題なく実行できるんです。この記事では、Podman Desktopを使って docker-compose.yml を実行し、従来のDocker Desktopと比較した使用感をレポートします。PPodmanに興味がある方はぜひ参考にしてください。

Podman Desktopのインストール

Podman DesktopはmacOSでは2種類のインストール方法があります。

  1. dmgファイルをダウンロードしてインストール
  2. 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の画面で確認するとちゃんと起動しています。

名称未設定2.jpg

作成したコンテナに接続

これまでVS codeでDocker Desktopを使って、コンテナに入る場合は拡張機能のDockerをinstallするだけでしたが、podmanでは設定を少し変える必要があります。

  1. Dockerの拡張機能設定をクリック
  2. 検索ワードにdockerpathと入力
  3. Dev>Containers: Docker Pathに"podman"と入力

名称未設定4のコピー.jpeg

そして、リモートエクスプローラーで開発コンテナを選択すると先ほど作成したコンテナが表示されていることがわかります。

名称未設定5.jpg

ウィンドウボタンをクリックすると接続されることを確認しました!
名称未設定6.jpg

まとめ

Podman Desktopへの移行は、予想以上にスムーズで、docker-composeの操作も問題なく行えました。Docker Desktopに比べてPodmanは軽量で、特に複数のコンテナを扱う際の動作が軽快であると感じました。今回の検証では簡単なアプリケーションで試しましたが、次回はより重たいアプリケーションでパフォーマンスの違いを検証してみたいと思います。Podmanに興味を持っている方やDocker Desktopのパフォーマンスに不満を感じている方には、一度Podman Desktopを試してみることをおすすめします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?