Oracle Linux 10 dev container with Node.js 24, Java, .NET 10, Python, docs tools, Japanese support
9.4K
Oracle Linux ベースのポータブルな開発用コンテナシステムです。Podman を使用して、開発ツールや日本語環境が事前設定された開発環境を簡単に構築・利用できます。
Oracle Linux 8、9、10 のマルチバージョンに対応しています。
このコンテナは、次のシナリオで利用できます。
サーバー上にコンテナを常駐させ、VS Code Remote SSH で接続するスタイルです。
コンテナ起動後は SSH サーバーが待機状態となり、ローカルの VS Code から Remote - SSH 拡張機能 を通じて直接接続できます。 ホームディレクトリとワークスペースはホストにマウントされるため、コンテナを再起動しても作業データは保持されます。
[ローカル PC の VS Code]
| SSH 接続 (port 40822 / 40922 / 41022)
v
[リモートサーバー上の Podman コンテナ]
+-- SSH サーバー (常駐)
+-- 開発ツール群
\-- /workspace <- ホストにマウント
この設計により、ローカルに開発ツールをインストールせず、複数人が同一サーバーのコンテナを個別インスタンスとして利用する構成も可能です。
プロジェクトに .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/ を参照してください。
GitHub Releases から取得した WSL 用 rootfs (tar.gz) を、Windows 標準の PowerShell のみで WSL2 にインポートできます。
詳細は「Windows 環境で WSL2 にインポート」を参照してください。
GitHub Actions 等のビルド・テスト環境としても利用できます。 詳細は docs-src/using-in-cicd/ を参照してください。
| イメージ | タグ |
|---|---|
| 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
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
| ツール | OL8 | OL9 | OL10 |
|---|---|---|---|
| Node.js | 24 | 24 | 24 |
| Java (OpenJDK) | 17 | 21 | 21 |
| .NET SDK | 10 | 10 | 10 |
| Python | 3.11 | 3.9 | 3.12 |
| C/C++ (GCC) | 8 | 11 | 14 |
mmdc, v11.15.0)# 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
# 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/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 は /opt/chrome-for-testing/148.0.7778.97/ に配置され、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 # このファイル
./storage/{version}/{instance}/# コンテナの状態確認
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
標準手順では、GitHub Releases に添付された WSL2 用 rootfs (tar.gz) を取得し、Windows 標準の PowerShell のみで WSL2 ディストリビューションとしてインポートします。
# 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 用 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 で起動できます。
このプロジェクトは、スクリプト・ドキュメントと生成されるコンテナイメージでライセンスが異なります。
コンテナイメージは Oracle Linux (GPL-2.0) をベースとしており、GCC・PlantUML・rsync 等の GPL-3.0 コンポーネントを含む多数のオープンソースソフトウェアから構成されています。 イメージを再配布する場合は、含まれる各コンポーネントのライセンス条項 (特に GPL の copyleft 条件) に従う必要があります。
詳細なコンポーネントリストおよびライセンス情報は、次を参照してください。
Content type
Image
Digest
sha256:fb9ebe5d6…
Size
2 GB
Last updated
3 days ago
docker pull hondarer/oracle-linux-10-dev