0. はじめに
仕事でWindowsOS+OracleDBを使っている。
その環境を自宅学習用で使いたくて、Oracle公式のDockerイメージを使うことにした。
はじめはすぐにできると思っていたので、メモすらしていなかったが、思ったより苦労してしまったので、後からではあるがメモを一部復元しながらではあるが、残すことにした。
Oracle公式のDockerイメージを使えるのは、x86-64 限定です。
MacのAppleシリコン(M1プロセッサなど)は非対応です。
DockerDesktopをインストールするには、Intel Virtualization Technologyに対応している必要があります。
1. wsl インストール
- windows 構成の追加/変更で追加
- Windowsコントロールパネルから「プログラムと機能」を開く
- プログラムと機能の「Windowsの機能の有効化または無効化」を開く
- Windowsの機能の有効化または無効化から、「Linux用Windowsサブシステム」にチェックを入れて「OK」を押し、再起動する。
- wsl の default を wsl2にコマンドで変更
- Powershellを開き「wsl --set-default-version 2」コマンドを実行する
- Windowsの更新
- 必須でないが WindowsTerminal を Windows Store でインストールしていると便利
2. WSLから名前解決できるようにするための設定変更
ディストリビューションがAlpineではOracleDBのインストールはできませんでした。
必要なライブラリを把握すればAlpineでも可能かもしれませんが、私ではどうにもできませんでした。
結局、Ubuntuに変えることで解決しました。
WSLでは、インストールしたLinuxの中から外部のサーバ(Githubなど)にアクセスする際の名前解決がデフォルトではできません。
OracleDBのインストーラーを使用するために、必要な設定となります。
- wsl のイメージを Windows Store から Ubuntu ダウンロード
- hostで「ipconfig」コマンドを実行して、インターネット接続を行っているアダプタのデフォルトゲートウェイを控える
- linuxにrootでログイン(wsl -d Ubuntu2004)
vi /etc/wsl.conf
[network]
generateResolvConf = false
[user]
default = root
rm /etc/resolv.conf
vi /etc/resolv.conf
nameserver 172.29.80.1
nameserver 192.168.10.1
nameserver 8.8.8.8
HOSTのデフォルトゲートウェイ(192.168.10.1)
GoogleのDNSサーバ(8.8.8.8)
-
WSLの再起動
- Powershell「wsl --shutdown」
-
任意ではあるが、一応 WSL のメモリ消費を制限する
- C:/Users//.wsconfig -> memory 1GB 以上
3. docker インストール
- Biosで「Intel Virtualization Technology」を有効化
- docker desktop の公式からダウンロード
- docker desktop をインストール
- インストーラーに従って、そのままインストールする
- dockerDesktopを起動して、設定画面を開く
- GeneralでUse the WSL2 Based engine => ture
- GeneralでUse Docker Compose V2 => true
- ResourcesでWSLINTEGRATIONを選択して、Ubuntu => true
4. OracleDB インストール
Ubuntu内でgitコマンドをインストールして次のコマンドを実行する
git clone https://github.com/oracle/docker-images.git
cd docker-images/OracleDatabase/SingleInstance/dockerfiles/
bash buildContainerImage.sh -v 18.3.0 -x
root@POB1Q4P:~/docker-images/OracleDatabase/SingleInstance/dockerfiles# bash buildContainerImage.sh -v 18.4.0 -x
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
Checking Docker version.
Ignored MD5 checksum.
==========================
Container runtime info:
Client:
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc., v0.8.2)
compose: Docker Compose (Docker Inc., v2.5.1)
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0)
scan: Docker Scan (Docker Inc., v0.17.0)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.14
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 3df54a852345ae127d1fa3092b95168e4a88e2f8
runc version: v1.0.3-0-gf46b6ba
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 5.10.16.3-microsoft-standard-WSL2
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.84GiB
Name: docker-desktop
ID: WWDH:O5EY:M6NM:NM3C:2G2G:EFW4:NR5Z:BMRN:AVQJ:YYQG:I7MT:637K
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5000
127.0.0.0/8
Live Restore Enabled: false
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
==========================
Building image 'oracle/database:18.4.0-xe' ...
[+] Building 623.7s (8/8) FINISHED
=> [internal] load build definition from Dockerfile.xe 0.0s
=> => transferring dockerfile: 35B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/oraclelinux:7-slim 3.5s
=> [internal] load build context 0.1s
=> => transferring context: 175B 0.0s
=> CACHED [1/3] FROM docker.io/library/oraclelinux:7-slim@sha256:ce16f06496bdc911eeba5cd9bc38372da0d8b758638dfb1502ff0aa1704b590e 0.0s
=> [2/3] COPY checkSpace.sh runOracle.sh setPassword.sh checkDBStatus.sh oracle-xe-18c.conf /install/ 0.1s
=> [3/3] RUN chmod ug+x /install/*.sh && sync && /install/checkSpace.sh && cd /install && yum -y install expect openssl oracle-database-preinstall-18c && sed 580.5s
=> exporting to image 39.4s
=> => exporting layers 39.3s
=> => writing image sha256:b9aaf3e705cd74a719bd15fa56e7bb02185c464783f7a9763df05a6cf0f8be76 0.0s
=> => naming to docker.io/oracle/database:18.4.0-xe 0.0s
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
Oracle Database container image for 'xe' version 18.4.0 is ready to be extended:
--> oracle/database:18.4.0-xe
Build completed in 625 seconds.
root@POB1Q4P:~/docker-images/OracleDatabase/SingleInstance/dockerfiles#
version: "3"
services:
db:
container_name: oracle
image: oracle/database:18.4.0-xe
ports:
- "15210:1521"
- "55000:5500"
# environment:
# - ENABLE_ARCHIVELOG=ture
# - ORACLE_EDITION=express
# - ORACLE_PWD=Oracle18
# - ORACLE_PDB=oracle
# volumes:
# - type: bind
# source: ".db/"
# target: "/opt/oracle/oradata/"
# - type: bind
# source: "startup"
# target: "/opt/oracle/scripts/startup"
# - type: bind
# source: "setup"
# target: "/opt/oracle/scripts/setup"
# logging:
# driver: json-file
# options:
# max-size: 5m
root@POB1Q4P:~# docker logs -f oracle
ORACLE PASSWORD FOR SYS AND SYSTEM: 1a24600656e7b0de
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database XE.
Enter SYS user password:
*****************
Enter SYSTEM user password:
*****************
Enter PDBADMIN User Password:
****************
Prepare for db operation
7% complete
Copying database files
29% complete
Creating and starting Oracle instance
30% complete
31% complete
34% complete
38% complete
41% complete
43% complete
Completing Database Creation
47% complete
50% complete
Creating Pluggable Databases
54% complete
71% complete
Executing Post Configuration Actions
93% complete
Running Custom Scripts
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/XE.
Database Information:
Global Database Name:XE
System Identifier(SID):XE
Look at the log file "/opt/oracle/cfgtoollogs/dbca/XE/XE.log" for further details.
Connect to Oracle Database using one of the connect strings:
Pluggable database: 5987c110af2f/XEPDB1
Multitenant container database: 5987c110af2f
Use https://localhost:5500/em to access Oracle Enterprise Manager for Oracle Database XE
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
2022-05-22T05:13:12.349495+00:00
XEPDB1(3):Resize operation completed for file# 10, old size 358400K, new size 368640K
2022-05-22T05:13:16.952046+00:00
XEPDB1(3):CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/XE/XEPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
XEPDB1(3):Completed: CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/XE/XEPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
XEPDB1(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
XEPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2022-05-22T05:13:20.144871+00:00
ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE
Completed: ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE
「DATABASE IS READY TO USE!」が出たらインストール成功です。