コロナ対応で在宅勤務となったので、
今まで興味はあったものの手を出せていなかったDockerを使ってみる。
Dockerのインストールは省略して、
今回はOracle19cでコンテナを構築する手順を紹介。
用意するもの
- Docker
-
以下記事を参照。
LinuxにDockerをインストールする - Oracle19c(本体)
- 公式サイトからLinux版をダウンロード。
- 仮想環境
- VMWare Workstation15 Player
- CentOS7(仮想上にある既存の環境を使用)
手順
1. 仮想マシンの準備
Oracleの要件を満たすスペックが必要。
メモリ3G、HDD100G程度を仮想マシンに割り当て。
2. Gitから公式リポジトリをclone
git clone https://github.com/oracle/docker-images.git
コマンドを実行した場所以下に、docker-images
ディレクトリができる。
3. Oracle19cを仮想OSへコピー
公式よりダウンロードしたLINUX.X64_193000_db_home.zip
をWinSCP等で仮想OS側へコピー。
4. Oracle19cを所定のディレクトリへ配置
cd ./docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0
cp -p /home/aaaa/LINUX.X64_193000_db_home.zip .
aaaa
は各自の環境に合わせて修正。
5. コンテナをビルド
cd ..
./buildDockerImage.sh -v 19.3.0 -e -i
引数の詳細は公式のReadmeを参照。
Build completed in xxxx seconds.
の表示が出たらビルド完了。
6. 永続化用のディレクトリ用意
mkdir /opt/oradata
chmod 777 /opt/oradata
chown 54321:54321 /opt/oradata
/opt/oradata
は各自の環境に合わせて修正。
フルアクセスの権限をつけておく。
所有者はrootでもいけるかもしれないが、念のため54321
にセットしておく。
※Docker側の所有者?よくわからん。。。
マウントポイントなので、ディレクトリ配下は空にしておく。
7. Docker runの実行
コマンド実行前にDockerが起動していることを確認。
systemctl status docker
Active: inactive (dead)
となっていたらDockerが起動していないので、
以下コマンドを実行してDockerを起動。
systemctl start docker
Dockerが起動したら、docker runを実行してコンテナを作成。
docker run --name Oracle19c -p 1521:1521 -p 5500:5500 -e ORACLE_SID=ODB -e ORACLE_PDB=ODB1 -e ORACLE_PWD=oracle -e ORACLE_CHARACTERSET=AL32UTF8 -v /opt/oradata:/opt/oracle/oradata oracle/database:19.3.0-ee
パラメータ | 意味 | 設定値 |
---|---|---|
--name | コンテナ名 | (例) Oracle19c |
-p | ポートマッピング 1つ目はOracle Listener 2つ目はOEM Express |
1521:1521 5500:5500 |
-e ORACLE_SID | SID | (例)ODB |
-e ORACLE_PDB | PDB | (例)ODB1 |
-e ORACLE_PWD | システムユーザのパスワード | (例)oracle |
-v | コンテナ側のデータ領域のマウント先 「:」より前がホスト側のマウントポイント |
(例)/opt/oradata |
初回は起動するまで時間がかかった。私の環境だと30分程度。 | ||
慌てず待機してDATABASE IS READY TO USE! のメッセージが出たら起動完了。 |
コマンドは実行したままになっているので、別のウィンドウで作業継続。
8. 接続確認
docker exec -it Oracle19c sqlplus system/oracle@localhost:1521/ODB1
SQL*Plusで接続確認して、無事接続できればOK。
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Apr 17 05:28:46 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Thu Apr 16 2020 15:58:14 +00:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL>
9. ユーザー作成
接続先がPDBであることを確認。
SQL> show con_name
CON_NAME
------------------------------
ODB1
SQL>
CreateUser文を実行。
create user testusr
identified by testpw
default tablespace USERS
temporary tablespace TEMP
quota unlimited on USERS
/
ユーザができていることを確認。
SQL> select username from dba_users where username = 'TESTUSR';
USERNAME
------------------------------------------------------------
TESTUSR
SQL>
作成したユーザーで接続できることを確認。
docker exec -it Oracle19c sqlplus testusr/testpw@localhost:1521/ODB1
10. イメージの保存
何かあったときに復旧できるように、作成したイメージを保存しておく。
- Dockerイメージの一覧表示(起動中のもの)
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3419fa5e694 oracle/database:19.3.0-ee "/bin/sh -c 'exec $O…" 15 hours ago Up 15 minutes (healthy) 0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp Oracle19c
- Dockerイメージの保存
■イメージのcommit
docker commit f3419fa5e694 oracle19c:ver1
■イメージの保存
docker save oracle19c:ver1 > oracle19c.tar
- Dockerイメージの読み込み(参考)
docker load < ./oracle19c.tar
参考サイト
今回構築する際に参考にしたサイトです。
ありがとうございました!