Sign inSign up

hondarer/oracle-linux-10-dev

By hondarer

•Updated 9 days ago

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

Image
Developer tools
0

10K+

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-dev⁠latest / main / vYYYYMMDD.x.x
oracle-linux-9-dev⁠latest / main / vYYYYMMDD.x.x
oracle-linux-10-dev⁠latest / 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-dev⁠latest / main / vYYYYMMDD.x.x
hondarer/oracle-linux-9-dev⁠latest / main / vYYYYMMDD.x.x
hondarer/oracle-linux-10-dev⁠latest / 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)212121
.NET SDK101010
Python3.123.123.12
C/C++ (GCC)81114

OL9 は /usr/local/bin の python、python3、pip、pip3 で開発用の Python 3.12 を優先します。OS 用の /usr/bin/python3 は 3.9 を維持します。

⁠Node.js パッケージマネージャー支援
  • @antfu/ni (v30.5.0)
  • pnpm (v12.5.1)
⁠ドキュメント・図版生成
  • Doxygen (v1.18.0) + doxybook2 (v1.6.1)
  • PlantUML (v1.2026.8)
  • Pandoc (v3.11) + pandoc-crossref (v0.3.25a)
  • Marp CLI (v4.5.1)
  • Mermaid CLI (mmdc, v11.17.0)
  • Widdershins (v4.0.1)
  • MkDocs (v1.6.1)、mkdocs-material (v9.7.7)
  • markdown-callouts (v0.4.0)、mkdocs-awesome-nav (v3.3.0)
  • MarkItDown (markitdown[all]、全オプション依存を含めてグローバル導入、バージョン固定なし)
  • MkDocs 関連パッケージは既定の Python にグローバル導入します。pymdown-extensions と watchdog は推移的依存として導入します。
  • Puppeteer / puppeteer-core (v25.11.0)
  • MiniSearch (v7.2.0)
  • @plantuml/core (v1.2026.8)
  • sharp (v0.35.4)
  • minimist (v1.2.8)
  • Chrome for Testing (v153.0.8010.36)
  • Inkscape (v1.4.4)
⁠テスト・ビルドツール
  • Make、CMake、automake、libtool
  • pkg-config、cmake
⁠開発ライブラリ
  • openssl-devel、libssh-devel、libcurl-devel
  • binutils-devel、elfutils-devel、systemd-devel、libX11-devel、libXt-devel
  • readline-devel、libedit-devel
  • expat-devel、pcre2-devel、gettext-devel、zlib-devel (OL10 は zlib-ng-compat-devel)
  • glibc-static、libstdc++-static
⁠ユーティリティ
  • jq、tree、rsync、time
  • clang-format、git-clang-format (LLVM 23.1.1)
  • expect、nkf、cloc (v2.10)
  • editorconfig-checker (v3.7.0)
  • gcovr (C/C++ カバレッジレポートツール)
  • yamllint (v1.38.0、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。OL9 は安定版 Oracle EPEL の ffmpeg-free)
  • git (v2.56.0、OL8/9/10 共通)、curl、wget
  • pwsh (v7.6.6、PowerShell)
  • Podman、podman-compose、Docker 互換の docker コマンド
⁠リポジトリ操作 CLI
  • gh (v2.101.0) — GitHub CLI
  • glab (v1.118.0) — GitLab CLI

Git は公式ソースから /usr/local に導入しています。Bash 補完と man ページも 2.56.0 に揃え、通常のログインと sudo git の両方でこのバージョンを使用します。システム設定ファイルは /etc/gitconfig、ユーザー設定は従来どおり ~/.gitconfig です。PCRE2 対応 (git grep -P) と gettext によるメッセージの国際化を有効にしています。公式配布には日本語メッセージの翻訳が含まれないため、既定の日本語ロケールでは Git のメッセージは英語になります。

Git の更新時は src/install-git.sh のバージョン・ソースと man ページの SHA256、.github/workflows/build-and-publish.yml の事前ダウンロード設定、tests/verify-git.sh の期待バージョン、関連ドキュメント・ライセンス通知を更新して、各 OS のイメージを再ビルドします。dnf update は /usr/local の Git を更新しません。ビルド時は src/packages/git-2.56.0.tar.xz と src/packages/git-manpages-2.56.0.tar.xz をキャッシュとして利用でき、キャッシュにも SHA256 検証を適用します。

⁠クイックスタート

⁠イメージビルド
# 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/153.0.8010.36/ に配置され、chrome コマンドで利用できます。

chrome --version

PUPPETEER_EXECUTABLE_PATH=/usr/local/bin/chrome と PUPPETEER_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             # このファイル

⁠イメージサイズの整理

ビルド時に英語・日本語・言語共通のリソースを保持して、検証済みの他言語リソースを整理します。Node.js のソースマップ、対応するソースがある Python バイトコード、Git のデバッグ情報も削減します。各インストールと同じビルド層で処理し、Git のハードリンクを保持します。Python バイトコードは利用時に再生成されます。

保持条件とローカル実測は サイズ削減調査⁠ と 言語リソース調査⁠ を参照してください。

⁠技術仕様

  • ベースイメージ: 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 21: GPL-2.0 with Classpath Exception
  • Node.js 24: MIT License
  • .NET 10: MIT License
  • Python 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:3ac4d5b68…

Size

2 GB

Last updated

9 days ago

docker pull hondarer/oracle-linux-10-dev