Sign inSign up

hondarer/oracle-linux-10-dev

By hondarer

Updated 4 days ago

Oracle Linux 10 dev container with Node.js 24, Java, .NET 10, Python, docs tools, Japanese support

Image
Developer tools
0

9.4K

hondarer/oracle-linux-10-dev repository overview

Oracle Linux 開発用コンテナ

Oracle Linux ベースのポータブルな開発用コンテナシステムです。Podman を使用して、開発ツールや日本語環境が事前設定された開発環境を簡単に構築・利用できます。

Oracle Linux 8、9、10 のマルチバージョンに対応しています。

特徴

  • ポータブル設計: ビルド時にユーザー情報に依存せず、どの環境でも利用可能
  • 豊富な開発ツール: Node.js、Java、.NET、Python、C/C++ 開発環境
  • ドキュメント生成: Doxygen、PlantUML、Pandoc による文書作成支援
  • 日本語対応: 日本語ロケール、フォント、マニュアルページを完備
  • セキュア: SSH キー認証、適切な権限管理
  • 高速: rootless Podman による軽量コンテナ

利用シナリオ

このコンテナは、次のシナリオで利用できます。

🖥️ リモートサーバー開発(主用途)

サーバー上にコンテナを常駐させ、VS Code Remote SSH で接続するスタイルです。

コンテナ起動後は SSH サーバーが待機状態となり、ローカルの VS Code から Remote - SSH 拡張機能 を通じて直接接続できます。 ホームディレクトリとワークスペースはホストにマウントされるため、コンテナを再起動しても作業データは保持されます。

[ローカル PC の VS Code]
        |  SSH 接続 (port 40822 / 40922 / 41022)
        v
[リモートサーバー上の Podman コンテナ]
  +-- SSH サーバー (常駐)
  +-- 開発ツール群
  \-- /workspace  <- ホストにマウント

この設計により、ローカルに開発ツールをインストールせず、複数人が同一サーバーのコンテナを個別インスタンスとして利用する構成も可能です。

📦 VS Code Dev Container として利用

プロジェクトに .devcontainer/ を配置し、Dev Containers 拡張機能から起動するスタイルです。

ローカル環境に Docker または Podman があれば、イメージをダウンロードするだけで即座に開発環境が構築できます。

# サンプル設定をプロジェクトにコピー
cp -r examples/devcontainer/ol8 /your/project/.devcontainer

VS Code で Dev Containers: Reopen in Container を実行すると、開発ツールが事前設定された環境が起動します。 詳細は examples/devcontainer/ および docs-src/using-in-vscode/ を参照してください。

🪟 WSL2 ディストリビューションとして利用(Windows)

GitHub Releases から取得した WSL 用 rootfs (tar.gz) を、Windows 標準の PowerShell のみで WSL2 にインポートできます。 詳細は「Windows 環境で WSL2 にインポート」を参照してください。

⚙️ CI/CD での利用

GitHub Actions 等のビルド・テスト環境としても利用できます。 詳細は docs-src/using-in-cicd/ を参照してください。


公開イメージ

GitHub Container Registry
イメージタグ
oracle-linux-8-devlatest / main / vYYYYMMDD.x.x
oracle-linux-9-devlatest / main / vYYYYMMDD.x.x
oracle-linux-10-devlatest / main / vYYYYMMDD.x.x
podman pull ghcr.io/hondarer/oracle-linux-container/oracle-linux-8-dev:latest
podman pull ghcr.io/hondarer/oracle-linux-container/oracle-linux-9-dev:latest
podman pull ghcr.io/hondarer/oracle-linux-container/oracle-linux-10-dev:latest
Docker Hub

GitHub Secrets (DOCKERHUB_USERNAME / DOCKERHUB_TOKEN) を設定した場合、ghcr.io と同一タグで push されます。

イメージタグ
hondarer/oracle-linux-8-devlatest / main / vYYYYMMDD.x.x
hondarer/oracle-linux-9-devlatest / main / vYYYYMMDD.x.x
hondarer/oracle-linux-10-devlatest / main / vYYYYMMDD.x.x
podman pull hondarer/oracle-linux-8-dev:latest
podman pull hondarer/oracle-linux-9-dev:latest
podman pull hondarer/oracle-linux-10-dev:latest

インストール済みツール

言語ランタイム
ツールOL8OL9OL10
Node.js242424
Java (OpenJDK)172121
.NET SDK101010
Python3.113.93.12
C/C++ (GCC)81114
Node.js パッケージマネージャー支援
  • @antfu/ni (v30.1.0)
  • pnpm (v11.3.0)
ドキュメント・図版生成
  • Doxygen + doxybook2
  • PlantUML
  • Pandoc + pandoc-crossref
  • Marp CLI (v4.4.0)
  • Mermaid CLI (mmdc, v11.15.0)
  • Widdershins (v4.0.1)
  • Puppeteer / puppeteer-core (v24.43.1)
  • MiniSearch (v7.2.0)
  • @plantuml/core (v1.2026.7)
  • sharp (v0.34.5)
  • minimist (v1.2.8)
  • Chrome for Testing (v148.0.7778.97)
  • Inkscape (v1.4.4)
テスト・ビルドツール
  • MakeCMakeautomakelibtool
  • pkg-configcmake
開発ライブラリ
  • openssl-devellibssh-devellibcurl-devel
  • binutils-develelfutils-develsystemd-devellibX11-devellibXt-devel
  • readline-devellibedit-devel
  • glibc-staticlibstdc++-static
ユーティリティ
  • jqtreersynctime
  • clang-formatgit-clang-format (LLVM 22.1.4)
  • expectnkfcloc
  • editorconfig-checker (v3.6.1)
  • gcovr (C/C++ カバレッジレポートツール)
  • yamllint (YAML 構文・スタイルチェッカー)
  • pytest / pytest-cov (Python テストフレームワーク・カバレッジ計測)
  • hjson (Human JSON パーサー)
  • textlint (v15.8.0)、textlint-rule-preset-ja-technical-writing (v12.0.2)、textlint-rule-preset-ja-spacing (v3.0.3)
  • bubblewrap (bwrap)
  • ffmpeg (RPM Fusion free)
  • gitcurlwget
  • pwsh (v7.6.5、PowerShell)
  • Podmanpodman-compose、Docker 互換の docker コマンド
リポジトリ操作 CLI
  • gh (v2.95.0) — GitHub CLI
  • glab (v1.105.0) — GitLab CLI

クイックスタート

イメージビルド
# OL8 をビルド (既定値)
./build-pod.sh 8

# OL9 をビルド
./build-pod.sh 9

# OL10 をビルド
./build-pod.sh 10
コンテナ起動
# OL8 インスタンス1 を起動 (既定値)
./start-pod.sh 8

# OL9 インスタンス1 を起動
./start-pod.sh 9

# OL10 インスタンス1 を起動
./start-pod.sh 10
SSH 接続
# OL8 SSH 接続 (ポート 40822)
ssh -p 40822 [email protected]

# OL9 SSH 接続 (ポート 40922)
ssh -p 40922 [email protected]

# OL10 SSH 接続 (ポート 41022)
ssh -p 41022 [email protected]

# 初回接続時、SSH 鍵キャッシュの破棄
ssh-keygen -R "[127.0.0.1]:40822"
コンテナ停止
# OL8 を停止
./stop-pod.sh 8

# OL9 を停止
./stop-pod.sh 9

# OL10 を停止
./stop-pod.sh 10

基本的な使い方

SSH キー認証の設定

ホストに ~/.ssh/id_rsa.pub が存在する場合、自動的に SSH キー認証が設定されます。

# SSH キーペア生成 (必要に応じて)
ssh-keygen -t rsa -b 4096
開発環境の確認
# コンテナ内で各ツールのバージョン確認
node --version
java --version
dotnet --version
python --version
gcc --version
ドキュメント生成例
# PlantUML 図の生成
plantuml diagram.puml

# Doxygen ドキュメント生成
doxygen Doxyfile

# Pandoc による文書変換
pandoc README.md -o README.pdf

# Marp による PDF 変換 (システムの Chrome for Testing を自動使用)
marp slides.md -o slides.pdf

# Mermaid 図の SVG 変換
mmdc -i diagram.mmd -o diagram.svg \
  --puppeteerConfigFile /etc/mermaid/puppeteer-config.json
Chrome for Testing と Puppeteer

Chrome for Testing は /opt/chrome-for-testing/148.0.7778.97/ に配置され、chrome コマンドで利用できます。

chrome --version

PUPPETEER_EXECUTABLE_PATH=/usr/local/bin/chromePUPPETEER_SKIP_DOWNLOAD=true が設定済みのため、プロジェクトへ Puppeteer をインストールしてもブラウザは追加ダウンロードされません。

Mermaid CLI で既存の Chrome for Testing を使用する場合は、コンテナ用の Puppeteer 設定を指定してください。設定には Chrome の実行パスと --no-sandbox が含まれています。

npm install puppeteer

コンテナや WSL 環境では Chrome sandbox を利用できないため、起動時に --no-sandbox を指定してください。実行ファイルの指定は不要です。

const puppeteer = require('puppeteer')

const browser = await puppeteer.launch({
  headless: true,
  args: ['--no-sandbox'],
})

Puppeteer が要求する別バージョンのブラウザを利用する場合は、システム設定を解除してからインストールしてください。

unset PUPPETEER_EXECUTABLE_PATH
export PUPPETEER_SKIP_DOWNLOAD=false
npm install puppeteer

Chrome for Testing はブラウザ自動化・テスト専用です。信頼できるコンテンツに対して使用してください。

高度な使い方

イメージの保存・読み込み
# OL8 イメージを圧縮ファイルとして保存
./save-pod.sh 8

# OL9 イメージを保存
./save-pod.sh 9

# OL10 イメージを保存
./save-pod.sh 10

# 保存したイメージを読み込み
./load-pod.sh 8
./load-pod.sh 9
./load-pod.sh 10
追加パッケージの事前配置

src/packages/ にパッケージファイルを配置すると、キャッシュとして動作します。 対象パッケージファイルは、src/Dockerfile を参照してください。

カスタムフォントの追加

src/fonts/ にフォントファイルを配置すると、システムフォントとして利用可能になります。

ディレクトリ構成

.
|-- build-pod.sh          # イメージビルドスクリプト
|-- start-pod.sh          # コンテナ起動スクリプト
|-- stop-pod.sh           # コンテナ停止スクリプト
|-- save-pod.sh           # イメージ保存スクリプト
|-- load-pod.sh           # イメージ読み込みスクリプト
|-- src/                  # ビルドファイル
|   |-- Dockerfile       # メインのビルド定義
|   |-- entrypoint.sh    # コンテナ起動スクリプト
|   |-- keys/            # SSH ホストキー (任意)
|   |-- fonts/           # 追加フォント (任意)
|   \-- packages/        # 追加パッケージ (任意)
|-- version-config.sh     # バージョン別共通設定
|-- storage/              # 永続化データ
|   |-- 8/1/             # OL8 インスタンス1
|   |   |-- home_${USER}/
|   |   \-- workspace/
|   |-- 9/1/             # OL9 インスタンス1
|   |   |-- home_${USER}/
|   |   \-- workspace/
|   \-- 10/1/            # OL10 インスタンス1
|       |-- home_${USER}/
|       \-- workspace/
|-- image/                # イメージ保存場所
|-- CLAUDE.md             # Claude Code 用ガイド
\-- README.md             # このファイル

技術仕様

  • ベースイメージ: Oracle Linux 8 / 9 / 10
  • コンテナエンジン: Podman (rootless mode)
  • アーキテクチャ: x86_64
  • ポート: 22 (SSH、ホスト側は 40822/40922/41022 等)
  • マウント: ホームディレクトリ、ワークスペース
  • UID/GID マッピング: Podman keep-id
  • ストレージ: ./storage/{version}/{instance}/

トラブルシューティング

SSH 接続できない場合
# コンテナの状態確認
podman ps

# コンテナログの確認 (OL8 の場合)
podman logs oracle-linux-8_1

# SSH 鍵キャッシュの破棄 (OL8 の場合)
ssh-keygen -R "[127.0.0.1]:40822"
権限エラーが発生する場合
# SELinux コンテキストの修正
sudo restorecon -R ./storage/

# ストレージディレクトリの再作成 (OL8 インスタンス1 の場合)
rm -rf ./storage/8/1/
mkdir -p ./storage/8/1/{home_$(whoami),workspace}
ビルドエラーが発生する場合
# 古いイメージの削除 (OL8 の場合)
podman rmi oracle-linux-8

# キャッシュ破棄後の再ビルド
podman system prune -f
./build-pod.sh 8

Windows 環境で WSL2 にインポート

標準手順では、GitHub Releases に添付された WSL2 用 rootfs (tar.gz) を取得し、Windows 標準の PowerShell のみで WSL2 ディストリビューションとしてインポートします。

クイックスタート (Windows)
# WSL2 のインストール (未インストールの場合)
# --no-distribution を指定しない場合は既定の Ubuntu がインストールされます
wsl --install --no-distribution

# 1. GitHub Releases から OL8 用 rootfs をダウンロード
#    https://github.com/hondarer/oracle-linux-container/releases/latest
#    例: oracle-linux-8-dev-vYYYYMMDD.x.x-wsl-rootfs.tar.gz を Downloads に保存

# 2. import-wsl.ps1 をダウンロード
Invoke-WebRequest `
  -Uri "https://raw.githubusercontent.com/hondarer/oracle-linux-container/main/examples/import-wsl/import-wsl.ps1" `
  -OutFile ".\import-wsl.ps1"

# 3. OL8 をインポート
$RootFs8 = "$env:USERPROFILE\Downloads\oracle-linux-8-dev-vYYYYMMDD.x.x-wsl-rootfs.tar.gz"
powershell -ExecutionPolicy Bypass -File .\import-wsl.ps1 `
  -RootFsPath $RootFs8 `
  -WslDistroName "OracleLinux8-Dev"

# OL9 の場合
$RootFs9 = "$env:USERPROFILE\Downloads\oracle-linux-9-dev-vYYYYMMDD.x.x-wsl-rootfs.tar.gz"
powershell -ExecutionPolicy Bypass -File .\import-wsl.ps1 `
  -RootFsPath $RootFs9 `
  -WslDistroName "OracleLinux9-Dev"

# OL10 の場合
$RootFs10 = "$env:USERPROFILE\Downloads\oracle-linux-10-dev-vYYYYMMDD.x.x-wsl-rootfs.tar.gz"
powershell -ExecutionPolicy Bypass -File .\import-wsl.ps1 `
  -RootFsPath $RootFs10 `
  -WslDistroName "OracleLinux10-Dev"

# インポートされたディストリビューションを起動
wsl -d OracleLinux8-Dev

詳細は examples/import-wsl/README.md を参照してください。

WSL で Podman を利用する

WSL 用 rootfs には rootless Podman、Docker 互換の docker コマンド、podman-compose が含まれます。 既定ユーザー user は、rootless 実行に必要な UID/GID マッピングと cgroupfs 設定を事前に保持します。

podman run --rm quay.io/podman/hello
docker --version
podman-compose --version
systemctl --user status podman.socket

podman.socket は systemd user socket として有効化済みです。 停止されている場合は systemctl --user enable --now podman.socket で起動できます。

関連ドキュメント

プロジェクトドキュメント
外部リンク

ライセンス

このプロジェクトは、スクリプト・ドキュメント生成されるコンテナイメージでライセンスが異なります。

プロジェクトスクリプトおよびドキュメント
  • ライセンス: MIT License
  • 適用範囲: ビルドスクリプト (build-pod.sh、start-pod.sh など)、ドキュメント、設定ファイル
  • 詳細: LICENSE を参照してください。
コンテナイメージ
  • ライセンス: GPL-2.0、GPL-3.0-or-later、MIT、BSD-3-Clause、PSF、OFL-1.1 などの複合ライセンス
  • 適用範囲: ビルドされるコンテナイメージとその内容
  • ベースOS ライセンス条項: src/LICENSE-IMAGE を参照してください。
  • 含まれるコンポーネント: src/NOTICE を参照してください。

コンテナイメージは Oracle Linux (GPL-2.0) をベースとしており、GCC・PlantUML・rsync 等の GPL-3.0 コンポーネントを含む多数のオープンソースソフトウェアから構成されています。 イメージを再配布する場合は、含まれる各コンポーネントのライセンス条項 (特に GPL の copyleft 条件) に従う必要があります。

主要コンポーネントのライセンス
  • Oracle Linux 8/9/10: GPL-2.0
  • OpenJDK 17/21: GPL-2.0 with Classpath Exception
  • Node.js 24: MIT License
  • .NET 10: MIT License
  • Python 3.9/3.11/3.12: PSF License
  • GCC 8/11/14: GPL-3.0-or-later
  • Doxygen: GPL-2.0
  • PlantUML: GPL-3.0+
  • Pandoc: GPL-2.0+
  • Inkscape: GPL
  • FFmpeg: LGPL-2.1+ / GPL-2.0+ components
  • rsync: GPL-3.0

詳細なコンポーネントリストおよびライセンス情報は、次を参照してください。

Tag summary

Content type

Image

Digest

sha256:fb9ebe5d6

Size

2 GB

Last updated

4 days ago

docker pull hondarer/oracle-linux-10-dev