Oracle Database 18c XE をDockerで動かしてみる。

このエントリは Oracle Database or GoldenGate Advent Calendar 2018 の Day 16 の記事となります。

 

みなさん、Oracle Database 18c XEを使ってますか?
私はまだ触っていないので、この機会に触ってみようと思います。

ただ、インストールするだけではつまらないので、Docker上で試してみようと思います。


Dockerで使用するには、以下の手順が必要です。

1.OTNからOracle Database 18c XEのrpmをダウンロード
2.githubからDockerイメージビルド用のスクリプトをダウンロード
3.イメージビルド用のスクリプトを実行
4.作成したイメージからコンテナ起動

 

以下手順となります。

#イメージビルド用のスクリプトをダウンロード

git clone https://github.com/oracle/docker-images

###OTNからoracle-database-xe-18c-1.0-1.x86_64.rpm をダウンロード後,docker-images/OracleDatabase/SingleInstance/dockerfiles/18.4.0にコピーする

#ビルド用ディレクトリに移動
cd docker-images/OracleDatabase/SingleInstance/dockerfiles

#ビルド用スクリプトの実行

 ./buildDockerImage.sh -v 18.4.0 -x
Checking if required packages are present and valid...
oracle-database-xe-18c-1.0-1.x86_64.rpm: OK
==========================
DOCKER info:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 18.09.0
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: c4446665cb9c30056f4998ed953e6d4ff22c7c39
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: fec3683
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.15.0-1021-azure
Operating System: Ubuntu 16.04.5 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 15.67GiB
Name: ubuntu
ID: UMRP:RMHM:6DWI:WKXZ:SP7X:OTU2:2RPM:HEPS:ZUBX:UHOC:XTM5:EWGE
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine

WARNING: No swap limit support
==========================
Building image 'oracle/database:18.4.0-xe' ...
Sending build context to Docker daemon 2.574GB
Step 1/11 : FROM oraclelinux:7-slim
7-slim: Pulling from library/oraclelinux
f25d82609194: Pull complete
Digest: sha256:2ed2820810409491b0d8fced14b5f6b3fd8206eb8fbf5f9138d825c5a98db020
Status: Downloaded newer image for oraclelinux:7-slim
---> b19454a5f17a
Step 2/11 : MAINTAINER Gerald Venzl <gerald.venzl@oracle.com>
---> Running in 37ba5ba2c6bb
Removing intermediate container 37ba5ba2c6bb
---> 0748a837c0e0
Step 3/11 : ENV ORACLE_BASE=/opt/oracle ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE ORACLE_SID=XE INSTALL_FILE_1="oracle-d
atabase-xe-18c-1.0-1.x86_64.rpm" RUN_FILE="runOracle.sh" PWD_FILE="setPassword.sh" CONF_FILE="oracle-xe-18c.conf" CHECK
_DB_FILE="checkDBStatus.sh" INSTALL_DIR="$HOME/install" ORACLE_DOCKER_INSTALL="true"
---> Running in 4cdf61b6978f
Removing intermediate container 4cdf61b6978f
---> 96cf7c299f79
Step 4/11 : ENV PATH=$ORACLE_HOME/bin:$PATH
---> Running in 9b8829c378bf
Removing intermediate container 9b8829c378bf
---> 024269c36e3a
Step 5/11 : COPY $INSTALL_FILE_1 $RUN_FILE $PWD_FILE $CHECK_DB_FILE $INSTALL_DIR/
---> 55182b72d69b
Step 6/11 : COPY $CONF_FILE $INSTALL_DIR/
---> eb5cfe6434a6
Step 7/11 : RUN cd $INSTALL_DIR && yum -y install oracle-database-preinstall-18c file openssl $INSTALL_FILE_1 && rm -rf /var/ca
che/yum && mkdir -p $ORACLE_BASE/scripts/setup && mkdir $ORACLE_BASE/scripts/startup && ln -s $ORACLE_BASE/scripts /docker-
entrypoint-initdb.d && mkdir -p $ORACLE_BASE/oradata /home/oracle && chown -R oracle:oinstall $ORACLE_BASE/oradata /home/oracle
&& mv $INSTALL_DIR/$RUN_FILE $ORACLE_BASE/ && mv $INSTALL_DIR/$PWD_FILE $ORACLE_BASE/ && mv $INSTALL_DIR/$CHECK_DB_FILE $O
RACLE_BASE/ && mv $INSTALL_DIR/$CONF_FILE /etc/sysconfig/ && ln -s $ORACLE_BASE/$PWD_FILE / && cd $HOME && rm -rf $INST
ALL_DIR && target_txt=$(cat /etc/security/limits.d/oracle-database-preinstall-18c.conf | grep -e 'oracle *hard *memlock*') && s
ed -i "/^$target_txt/ c#$target_txt" /etc/security/limits.d/oracle-database-preinstall-18c.conf && chmod ug+x $ORACLE_BASE/*.sh
---> Running in 7a576c1cc0ae
Loaded plugins: ovl
Examining oracle-database-xe-18c-1.0-1.x86_64.rpm: oracle-database-xe-18c-1.0-1.x86_64
Marking oracle-database-xe-18c-1.0-1.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package file.x86_64 0:5.11-35.el7 will be installed
---> Package openssl.x86_64 1:1.0.2k-16.0.1.el7 will be installed
~~~~~~~~
xorg-x11-utils.x86_64 0:7.5-23.el7
xorg-x11-xauth.x86_64 1:1.0.9-1.el7
xz.x86_64 0:5.2.2-1.el7

Complete!

Removing intermediate container 7a576c1cc0ae
---> cd3099f0db97
Step 8/11 : VOLUME ["$ORACLE_BASE/oradata"]
---> Running in 8f34c92a369d
Removing intermediate container 8f34c92a369d
---> be8fc9066c53
Step 9/11 : EXPOSE 1521 8080 5500
---> Running in 2720d5113806
Removing intermediate container 2720d5113806
---> 0bf8facf860f
Step 10/11 : HEALTHCHECK --interval=1m --start-period=5m CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
---> Running in 8119ffac1a9a
Removing intermediate container 8119ffac1a9a
---> 1677191ded41
Step 11/11 : CMD exec $ORACLE_BASE/$RUN_FILE
---> Running in 58f63241b643
Removing intermediate container 58f63241b643
---> 99a04dbc81a6
[Warning] One or more build-args [DB_EDITION] were not consumed
Successfully built 99a04dbc81a6
Successfully tagged oracle/database:18.4.0-xe

Oracle Database Docker Image for 'xe' version 18.4.0 is ready to be extended:

--> oracle/database:18.4.0-xe

Build completed in 985 seconds.

#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 18.4.0-xe 99a04dbc81a6 8 minutes ago 8.43GB
oraclelinux 7-slim b19454a5f17a 4 weeks ago 117MB


###### コンテナの起動 メモリの割り当ては1GB パスワードはoracle123 マウントポイントは /docker/oracle
docker run -d -v /dev/shm --tmpfs /dev/shm:rw,nosuid,nodev,exec,size=1g
--name xe-18c --hostname xe-18c 
-p 1521:1521 -p 8080:8080 -p 5500:5500  
-e ORACLE_PWD=oracle123 
-v /docker/oracle:/opt/oracle/oradata 
oracle/database:18.4.0-xe

#databaseの作成状況の確認
docker logs xe-18c

##以下のような出力があれば、databaseを使用可能

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

#コンテナの操作はsshではなく、docker execで行う

docker exec -ti xe-18c /bin/bash

#DBへの接続

sqlplus sys/oracle123@//localhost:1521/XE as sysdba
sqlplus system/oracle123@//localhost:1521/XE
sqlplus pdbadmin/oracle123@//localhost:1521/XEPDB1

 

皆さん、良いクリスマスを!