Podman

1 概要

Podman はデーモンレス・rootless で動作するオープンソースのコンテナエンジンです。Docker 互換のコマンドラインインターフェースを持ちながら、root 権限なしでコンテナを実行できるため、CI サーバーや共有環境でのセキュアなコンテナ利用に適しています。

このリポジトリの Jenkins ベースの CI では、Podman を使って Oracle Linux 開発コンテナイメージを pull・実行し、GitHub Actions と同じビルド環境を再現しています。コンテナイメージは GitHub Container Registry (ghcr.io)Docker Hub の両方から取得できます。

2 習得目標

3 学習マテリアル

3.1 公式ドキュメント

4 利用可能な Oracle Linux 開発コンテナ

このリポジトリのビルドに使用する Oracle Linux 開発コンテナは、GitHub Container Registry と Docker Hub の両方で公開されています。

4.1 GitHub Container Registry (ghcr.io)

認証なしで pull できます(公開イメージ)。

イメージ タグ リンク
ghcr.io/hondarer/oracle-linux-container/oracle-linux-8-dev latest / main / vYYYYMMDD.x.x pkgs
ghcr.io/hondarer/oracle-linux-container/oracle-linux-10-dev latest / main / vYYYYMMDD.x.x pkgs
podman pull ghcr.io/hondarer/oracle-linux-container/oracle-linux-8-dev:latest
podman pull ghcr.io/hondarer/oracle-linux-container/oracle-linux-10-dev:latest

4.2 Docker Hub

GitHub Secrets (DOCKERHUB_USERNAME / DOCKERHUB_TOKEN) が設定されている場合に ghcr.io と同一タグで push されます。公開されているため、認証なしで pull できます。

イメージ タグ リンク
hondarer/oracle-linux-8-dev latest / main / vYYYYMMDD.x.x Docker Hub
hondarer/oracle-linux-10-dev latest / main / vYYYYMMDD.x.x Docker Hub
podman pull hondarer/oracle-linux-8-dev:latest
podman pull hondarer/oracle-linux-10-dev:latest

4.3 レジストリの選択指針

条件 推奨レジストリ
制約なし ghcr.io (推奨)
ghcr.io への接続が困難な環境 Docker Hub
プライベートイメージへのアクセスが必要 Jenkins Credentials で認証情報を管理

5 このリポジトリとの関連

5.1 Jenkins ビルドジョブでの使用

Jenkins の Execute shell スクリプト内で podman pullpodman run を使い、コンテナ内で make / make test を実行します。詳細な手順は Jenkins スキルガイド を参照してください。

概念図:

Jenkins ジョブ (Execute shell)
  |
  +-- podman pull <IMAGE>               # レジストリからイメージ取得
  |
  +-- git clone --recurse-submodules    # ワークスペースにリポジトリを展開
  |
  +-- podman run --rm -i \              # コンテナ内でビルド実行
          --entrypoint /bin/bash \
          -v "$WORKDIR:/workspace:Z" \
          <IMAGE> ...
              |
              +-- devcontainer-entrypoint.sh  # ユーザー初期化
              +-- make                         # ビルド
              +-- make test                    # テスト

5.2 GitHub Actions との関係

GitHub Actions の Linux CI でも同じイメージを使用しています (.github/workflows/ci.yml)。Jenkins でも同一イメージを使うことで、ローカル環境・CI の差異を最小化できます。

6 関連ドキュメント