Oracle Linux 8 dev container with Node.js 24, Java, .NET 10, Python, docs tools, Japanese support
10K+
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:b9f2bd95c…
Size
2 GB
Last updated
3 days ago
docker pull hondarer/oracle-linux-8-dev