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

Was this helpful?