Facebook Twitter
お問い合わせ
TOPICS
更新情報
ホーム > ブログ > 開発 > 【Oracle Database】DockerコンテナでOracleデータベースを気軽に使う

【Oracle Database】DockerコンテナでOracleデータベースを気軽に使う

ブログ
開発
2025.04.07

はじめまして! h.kitachi と申します。
普段はプログラマーとしてアプリケーション開発などを行っています。
 
突然ですが、PC のローカル環境にサンドボックスのように使える Oracle Database が欲しくなったことはありませんか?
 
学習用や実験用にはもちろん、アプリケーション開発業務においても、開発初期や大規模改修の初期段階などでは、チームメンバーに気を使うことなく試行錯誤をしたいことがよくあると思います。
 
今回は free 版 Oracle Database を Docker コンテナの形で使用する方法をご紹介します。
 
Docker はインストール済みで、Docker CLI が利用可能になっている前提で話を進めていきます。

 

Oracle Database コンテナの起動方法

Oracle Container Registry で公開されている Docker イメージを使用して、コマンドひとつで完了です。

docker run -d
    --name {コンテナ名}
    -p {ホスト側のポート番号}:1521
    -e ORACLE_PDB={PDB名}
    -e ORACLE_PWD={管理者ユーザーのパスワード}
    container-registry.oracle.com/database/free:latest-lite

※ {...} の部分は任意で決めることができます。
※ 改行はレイアウトの都合です。実際のコマンドには含まれません。

とても簡単ですね。
 
製品バージョンは限られてしまいますが(2025 年 4 月現在は "23ai Free")、冒頭で述べたようなサンドボックス目的ならこれで十分です。
 
上記の docker run コマンド実行後、少し待てば、-p オプションで指定したポートで Oracle Database への接続が可能になります。
 
正常に起動完了したことを確認したい場合は、コマンド docker logs {コンテナ名} でコンテナからの出力メッセージを確認します。
以下のメッセージが出力されていれば Oracle Database は正常に起動完了しています。

#########################
DATABASE IS READY TO USE!
#########################

 

Full イメージと Lite イメージ

Oracle Container Registry の Oracle Database イメージには、Full と Lite が用意されています。
 
これら二種類のエディションの違いは、以下の通りです。
 

  • Oracle Text などの Oracle Database ならではの拡張機能を含んでいるかどうか
  • イメージのファイルサイズ (Full イメージは約 10GB、Lite イメージは約 2GB)

 

Lite でも RDBMS としての基本機能はしっかり使用できます。
 
上記の docker run コマンドでは Lite を指定していますが、もし Full のほうを使いたい場合は、コマンドの最後にあるイメージ名の末尾から -lite を取り除いて free:latest にするだけで OK です。

 

コンテナ間で通信させる

データベースだけでなく、データベースを使用する側となる Web サービスなどもコンテナ化して、相互に通信させたいことがあります。
 
Docker コンテナは、特に指定がなければデフォルトで用意されている bridge network へ接続されます。
そのため、上記の docker run コマンドで作成したコンテナに対して、特に手を加えることなく、割り当てられている IP アドレスを調べれば、相互通信することが可能です。
 
しかしながら、コンテナ起動後に調べる必要のある IP アドレスより、固定的にコンテナ名で通信を行えたほうが便利です。
 
コンテナ名で通信する場合は、少しだけ、手順が追加となります。
 
まず、新しい bridge network を作成します。

Docker network create {ネットワーク名}

※ {...} の部分は任意で決めることができます。

明示的に作られた bridge network には独自の DNS 機能が与えられており、コンテナ名によるアドレス解決が可能です。(デフォルトの bridge network に DNS 機能がない理由はよくわかりませんが、後方互換のためという説があるようです。)
 
あとは、作成した bridge network へ接続する設定で、Oracle Database のコンテナを作り直すだけです。

docker run -d
    --name {コンテナ名}
    --network {ネットワーク名}
    -p {ホスト側のポート番号}:1521
    -e ORACLE_PDB={PDB名}
    -e ORACLE_PWD={管理者ユーザーのパスワード}
    container-registry.oracle.com/database/free:latest-lite

※ {...} の部分は任意で決めることができます。
※ 改行はレイアウトの都合です。実際のコマンドには含まれません。

Oracle Database コンテナが起動したら、試しに、同じく無料で使用できる Oracle SQL Command Line (SQLcl) のコンテナを作って、そこから Oracle Database へアクセスしてみましょう。

docker run --rm -it
    --network={ネットワーク名}
    container-registry.oracle.com/database/sqlcl:latest
    system/{管理者ユーザーのパスワード}@{Oracle Database のコンテナ名}:1521/{PDB名}

※ {...} の部分は任意で決めることができます。
※ 改行はレイアウトの都合です。実際のコマンドには含まれません。

SQLcl は SQL*Plus と同じ感覚で使用できます。

SQL> select username from all_users;

USERNAME
_________________________
SYS
AUDSYS
SYSTEM
...

XX rows selected.

SQLcl から抜けたい場合は exit コマンドを実行します。

SQL> exit
Disconnected from Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.7.0.25.01

今回作成した SQLcl コンテナは --rm オプションで起動したので、停止と同時に削除されます。

 

公式ドキュメント

今回紹介した内容は、以下の手順で参照できる公式ドキュメントから抜粋したものです。
 

  1. ブラウザから https://container-registry.oracle.com へアクセスする。

  2. "Browse Containers" - "Database" を選択する。

  3. "Repositry" - "free"(Oracle Database Free) を選択する。

コンテナ起動時の動作のカスタマイズなど、本稿で説明しきれなかった情報もたくさん記載されています。
また、Oracle Database 以外の様々な Oracle 製品や、free 版以外の Oracle Database についてもイメージが用意されていますので、レジストリ全体をざっと眺めてみてもよいかもしれません。

 

まとめ

エンターブライズ・アプリケーションを支える高機能・高性能なデータベース基盤として重用されてきた半面、導入するにはいろいろと敷居の高かった Oracle Database も、ずいぶんと身近になりました。
 
スタートアップや開発環境は Docker コンテナでフットワーク軽く、ステージング以上の運用環境は Oracle Cloud の Autonomous Database などで簡単に構築・管理、というようなアプローチが可能になったのは嬉しいですね!


この記事が気に入ったら
「いいね!」

この記事を書いた人


関連コンテンツ

CONTACT お問い合わせ

Cloudiiのサービスやプロダクトについて
興味をお持ちの方は、
お気軽にお問い合わせください。