Create database in docker

Github :https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance**

Oracle Database container

Test Environment

  1. Windows 10

  2. Docker Desktop for Windows (recommand : stable) Install : https://hub.docker.com/editions/community/docker-ce-desktop-windows

โ€ป Docker ์„ค์น˜๋Š” ์ƒ๊ธฐ ๋งํฌ๋กœ ๋Œ€์ฒดํ•œ๋‹ค. โ€ป Windows10 + Hyper-V์— Linux VM์„ ๊ตฌ์„ฑํ›„ docker ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•ด๋„ ์ƒ๊ด€ ์—†๋‹ค. โ€ป WSL๋Š” ๊ตณ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

Oralce Database Container ๊ตฌ์„ฑ

SingleInstance ๊ธฐ์ค€์ด๋ฉฐ, Github Guide ์ƒ์—๋Š” RAC๋„ ํฌํ•จ๋˜์–ด์ ธ ์žˆ๊ธดํ•˜๋‹ค.

๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ Database Version & Editions

Oracle Github์— oracle database๋ฅผ ๊ตฌ์„ฑํ• ์ˆ˜ ์žˆ๋Š” Dockerfile๊ณผ ๋ฐฉ๋ฒ•์„ ๊ฐ€์ด๋“œํ•˜๊ณ  ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ œ๊ณต๋˜๋Š” Dockerfile sample์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • Oracle Database 19c (19.3.0) Enterprise Edition and Standard Edition 2

  • Oracle Database 18c (18.4.0) Express Edition (XE)

  • Oracle Database 18c (18.3.0) Enterprise Edition and Standard Edition 2

  • Oracle Database 12c Release 2 (12.2.0.2) Enterprise Edition and Standard Edition 2

  • Oracle Database 12c Release 1 (12.1.0.2) Enterprise Edition and Standard Edition 2

  • Oracle Database 11g Release 2 (11.2.0.2) Express Edition (XE)

ํ•„์š”์‚ฌํ•ญ

์ƒ์„ฑ์‹œ ๋ฒ„์ „๊ณผ edition๋ณ„ software zipํŒŒ์ผ์„ ๋ฐ›์•„์„œ dockerfile๊ณผ ๊ฐ™์€ ๊ฒฝ๋กœ์— ์ €์žฅํ•ด์•ผ build๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋‹ค์Œ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด์„œ ๋‹ค์šด ๋ฐ›์„์ˆ˜ ์žˆ๋‹ค. https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

/oracle/docker-images/OracleDatabase/SingleInstance/dockerfiles/18.3.0$ ls -l
total 4457729
-rwxrwxrwx 1 root root         64 Mar 20 10:21 Checksum.ee
-rwxrwxrwx 1 root root         64 Mar 20 10:21 Checksum.se2
-rwxrwxrwx 1 root root       3532 Mar 20 10:21 Dockerfile
-rwxrwxrwx 1 root root 4564649047 Mar 20 13:48 LINUX.X64_180000_db_home.zip
-rwxrwxrwx 1 root root       1050 Mar 20 10:21 checkDBStatus.sh
-rwxrwxrwx 1 root root        905 Mar 20 10:21 checkSpace.sh
-rwxrwxrwx 1 root root       3102 Mar 20 10:21 createDB.sh
-rwxrwxrwx 1 root root       7002 Mar 20 10:21 db_inst.rsp
-rwxrwxrwx 1 root root       9407 Mar 20 10:21 dbca.rsp.tmpl
-rwxrwxrwx 1 root root       2526 Mar 20 10:21 installDBBinaries.sh
-rwxrwxrwx 1 root root       6526 Mar 20 10:21 runOracle.sh
-rwxrwxrwx 1 root root       1015 Mar 20 10:21 runUserScripts.sh
-rwxrwxrwx 1 root root        758 Mar 20 10:21 setPassword.sh
-rwxrwxrwx 1 root root        932 Mar 20 10:21 setupLinuxEnv.sh
-rwxrwxrwx 1 root root        678 Mar 20 10:21 startDB.sh

Docker Build

docker buildํ•˜๋Š” ํŒŒ์ผ์ด shell script๋กœ ๋˜์–ด ์žˆ์œผ๋‚˜, windows์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ build๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

docker build --force-rm=true --no-cache=true --
build-arg DB_EDITION=se2 -t oracle/database:18.3.0-se2 -f DOCKERFILE  .

Docker Build ๊ฒฐ๊ณผ

oracle database 18c 18.3 standard edition 2๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์„ฑ๋œ docker image์ด๋‹ค. Software ZIPํŒŒ์ผ ์‚ฌ์ด์ฆˆ๊ฐ€ 4.3GB์ธ๋ฐ, ์••์ถ•ํ•ด์ œ ๋ฐ Oraclelinux + package ์ถ”๊ฐ€ ์„ค์น˜๋“ฑ ํ•ด์„œ ์ตœ์ข… ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋Š” 8.4GB๊ฐ€ ๋˜์—ˆ๋‹ค. ์†Œ์š”์‹œ๊ฐ„์€ PCํ™˜๊ฒฝ๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ, ์•ฝ 25๋ถ„ ์†Œ์š”๋˜์—ˆ๋‹ค.

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
oracle/database     18.3.0-se2          e493651381d5        About an hour ago   8.4GB
<none>              <none>              1cac0701f076        About an hour ago   13.2GB
oraclelinux         7-slim              fd84774952b5        10 days ago         118MB

13.2GB์˜ ์ด๋ฏธ์ง€๋Š” ์ƒ์„ฑ๊ณผ์ •์—์„œ ๋ฐœ์ƒ๋˜๋Š” ์ž„์‹œ ์ด๋ฏธ์ง€๋กœ ๋ณด์ด๋ฉฐ, ์‚ญ์ œํ•ด๋„ ๋ฌด๋ฐฉํ•œ๊ฒƒ์œผ๋กœ ํ™•์ธ๋˜์—ˆ๋‹ค.

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
oracle/database     18.3.0-se2          e493651381d5        About an hour ago   8.4GB
oraclelinux         7-slim              fd84774952b5        10 days ago         118MB

๊น”๋” ^_^

docker volume

oracle database container๋ฅผ ์œ„ํ•œ volume์„ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด๋ณธ๋‹ค. ์ด volume์€ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋™์‹œ ๋ฐ์ดํ„ฐ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๊ณ , ๊ธฐ๋™์‹œ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ• ์ˆ˜ ์žˆ๋‹ค. default๋กœ๋Š” /opt/oracle/oradata๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋œ๋‹ค.

docker volume create oracle18c

docker volume ls
DRIVER              VOLUME NAME
local               oracle18c

docker run

Oracle๊ด€๋ จ parameters๋ฅผ ์ด์šฉํ•ด์„œ docker container๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค. -e๋กœ ์‹œ์ž‘๋˜๋Š” parameters๋“ค์€ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด default๋กœ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜, ORACLE_PWD๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž„์˜ ์ƒ์„ฑํ›„ ์•„๋ž˜์™€ ๊ฐ™์ด ์•Œ๋ ค์ฃผ๊ฒŒ ๋˜๋ฉฐ, ์ด๋Š” ์ถ”ํ›„์— ๋ณ€๊ฒฝํ• ์ˆ˜๋„ ์žˆ๋‹ค.

ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: <blablabla>

default๊ฐ’์„ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๊ฐ€ ๋œ๋‹ค.

docker run --name oracle18c -p 1521:1521 -p 5500:5500 -e ORACLE_SID=ORCLCDB -e ORACLE_PDB=ORCLPDB1 -e ORACLE_PWD=qwer123$ -e ORACLE_CHARACTERSET=AL32UTF8 -v oracle18c:/opt/oracle/oradata oracle/database:18.3.0-se2

์‹ค์ œ ๊ธฐ๋™์ด ๋๋‚˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ค๊ธฐ๊นŒ์ง€ ์•ฝ15๋ถ„ ์†Œ์š”๋˜์—ˆ๋‹ค.

...์ƒ๋žต...
SQL>
PL/SQL procedure successfully completed.

SQL> Disconnected from Oracle Database 18c Standard Edition 2 Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
...์ƒ๋žต...

shell ์ ‘์†

docker exec -ti oracle18c bash
[oracle@55087facf7b7 ~]$

sqlplus connection test

install sqlplus

sql connection ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ client basic package์™€ sqlplus package(option)๋ฅผ ์„ค์น˜ํ•ด๋ณด์ž. https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html ์ตœ์‹  ๋ฒ„์ „์ด ์ข‹์„ํ…Œ๋‹ˆ(?) 19.5๋ฒ„์ „์˜ SQL*Plus Package๋ฅผ ๋‹ค์šด๋ฐ›์•„ ์„ค์น˜ํ•œ๋‹ค.

sqlplus๋ฅผ ํ†ตํ•ด์„œ ์ ‘์†ํ•˜์—ฌ Database ๋ฒ„์ „๊ณผ ์—๋””์…˜์„ ํ™•์ธํ•œ๋‹ค.

sqlplus.exe pdbadmin/qwer123$@//localhost:1521/ORCLPDB1
or
sqlplus.exe system/qwer123$@//localhost:1521/ORCLCDB
or
sqlplus.exe sys/qwer123$@//localhost:1521/ORCLCDB as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Mar 20 17:08:29 2020
Version 19.5.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 18c Standard Edition 2 Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

SQL> exit
Disconnected from Oracle Database 18c Standard Edition 2 Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

non-install sqlplus

๋งŒ์•ฝ SQL*Plus ์„ค์น˜๊ฐ€ ์•ˆ๋˜์–ด์ ธ ์žˆ๋‹ค๋ฉด docker ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ๋‚ด sqlplus๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ• ์ˆ˜๋„ ์žˆ๋‹ค.

docker exec -ti oracle18c sqlplus pdbadmin@ORCLPDB1

SQL*Plus: Release 18.0.0.0.0 - Production on Sun Mar 22 23:33:13 2020
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Enter password: 
Last Successful login time: Sun Mar 22 2020 23:24:34 +00:00

Connected to:
Oracle Database 18c Standard Edition 2 Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

SQL> exit
Disconnected from Oracle Database 18c Standard Edition 2 Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

ํŒจ์Šค์›Œ๋“œ ๋ณ€๊ฒฝ

ํŒจ์Šค์›Œ๋“œ ๋ณ€๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•œ๋‹ค.

docker exec oracle18c ./setPassword.sh q1w2e3R$
sqlplus.exe sys/qwer123$@//localhost:1521/ORCLCDB as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Mar 23 08:29:42 2020
Version 19.5.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name: ^C

-------------------------------------------------

sqlplus.exe sys/q1w2e3R$@//localhost:1521/ORCLCDB as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Mar 23 08:29:58 2020
Version 19.5.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 18c Standard Edition 2 Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

SQL> exit
Disconnected from Oracle Database 18c Standard Edition 2 Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

docker ์ค‘์ง€

docker stop oracle18c

docker ์‹œ์ž‘

docker start oracle18c

docker ์‚ญ์ œ

์‚ญ์ œ๋Š” docker๊ฐ€ ์ค‘์ง€ ๋œ ์ƒํƒœ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค

docker rm oracle18c

Mysql Container ๊ตฌ์„ฑ

docker hub ๊ณต์‹ mysql

Dockerfile 5.6.47, 5.6 5.7.29, 5.7, 5 8.0.19, 8.0, 8, latest

docker images

docker hub์—์„œ ๋ณ„๋„ ์ œ์•ฝ ์—†์ด ๋‹ค์šด ๋ฐ›๊ฑฐ๋‚˜, ์ง์ ‘ Dockerfile๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

latest ๋ฒ„์ „ ๋‹ค์šด
docker pull mysql

ํŠน์ • ๋ฒ„์ „ ๋‹ค์šด(5.7.28)
docker pull mysql:5.7.28

๋ฒ„์ „์— ๋Œ€ํ•œ ํ™•์ธ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

docker volume

mysql database container๋ฅผ ์œ„ํ•œ volume์„ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด๋ณธ๋‹ค. ์ด volume์€ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋™์‹œ ๋ฐ์ดํ„ฐ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๊ณ , ๊ธฐ๋™์‹œ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ• ์ˆ˜ ์žˆ๋‹ค.

docker volume create mysql8

docker volume ls
DRIVER              VOLUME NAME
local               mysql8
local               oracle18c

docker run

Mysql๊ด€๋ จ ๋‹ค์–‘ํ•œ Environment variable๋“ค์ด ์žˆ์œผ๋‚˜, ์ผ๋ถ€๋Š” docker์—์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ ํ•œ ๋ณ€์ˆ˜(MYSQL_HOST ๊ฐ™์ด)๊ฐ€ ์žˆ๋‹ค. ๋ฒ„์ „์— ๋งž๋Š” ๋ณ€์ˆ˜๋“ค์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค. ํŠนํžˆ MYSQL_ROOT_PASSWORD๋Š” ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๋ณ€์ˆ˜์ด๋‹ค.

docker run --name mysql8 -v mysql8:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=qwer123$ -p 3306:3306 -p 33060:33060 -d mysql

shell ์ ‘์†

docker exec -ti mysql8 bash
root@7d00c82d7c2b:/#

์ ‘์† ํ™•์ธ

non-install mysql client

docker exec -ti mysql8 mysql -uroot -pqwer123$
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.19 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 8.0.19    |
+-----------+
1 row in set (0.00 sec)

mysql> exit
Bye

docker ์ค‘์ง€

docker stop mysql8

docker ์‹œ์ž‘

docker start mysql8

docker ์‚ญ์ œ

์‚ญ์ œ๋Š” docker๊ฐ€ ์ค‘์ง€ ๋œ ์ƒํƒœ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค

docker rm mysql8

Last updated