oracle2c-r2(12.2.0.1) 的鏡像


docker- 構建 oracle2c-r2(12.2.0.1) 的鏡像

 

需求

由於公司的數據庫需要使用新的oracle版本(12c-r2 -->12.2.0.1),從之前的oracle11g遷移到12c。所以,便有了我們今天的內容。

首先,我們就先來介紹一下如何構建oracle12c的鏡像(docker image)。

如果大家有使用的需求而又不是正式的項目,可以直接到docker hub 上面 pull 一個別人家的。在這里附上鏈接:https://hub.docker.com/r/mritschel/oracle12cr2_base/

PS.這個真的不是廣告啊,我本來也是想這么搞得,畢竟不用重復造輪子么。。。無奈是公司的項目需求,不能使用第三方的,所以就只能自己構建吧。。。

 

准備

准備工作主要分為兩部分:

part1

需要下載oracle相關的東東,例如安裝文件,dockerfile。這些都可以從oracle 的github 上面找到。https://github.com/oracle/docker-images/tree/master/OracleDatabase

下載完成以后,新建一個目錄,我這里是/oracle12c,把dockerfile(其實是一個shell腳本buildDockerImage.sh)放到里面:

 

 

 

 

 

然后再在這個目錄下創建一個子目錄,我這里是/oracle12c/12.2.0.1; 最后再把下載的oracle12c-r2的安裝包和從GitHub上面下載的相關文件統統放到里面。類似下圖:

 

Part2

在這里還需要強調一點,由於Oracle12c需要container的空間 大於默認值(10g),因此我們需要為container擴容。請注意:只有 Storage Driver = devicemapper 的文件存儲格式才支持擴容。由於我這里環境是centos7,且安裝的docker版本是1.13,而且文件存儲格式是devicemapper, 所以可以按照下面方法對container進行擴容。。。貌似最新的docker17.03采用的是 “overlay2”的文件存儲格式,也許可以省略這一步。

solution1 - 啟動docker daemon時設定參數

# dockerd --storage-opt dm.basesize=30G

 

solution2 - 修改配置文件 "/etc/sysconfig/docker-storage"

# vi /etc/sysconfig/docker-storage

修改參數為:DOCKER_STORAGE_OPTIONS=--storage-opt dm.basesize=30G

 

到這里,我們的准備工作就完成了。

 

開始構建

構建工作相對簡單,只是需要運行dockerfile即可。由於構建的過程中需要在線下載和安裝一些組件,此時需要保證網絡暢通。

  View Code

 

 

完成構建

完成構建之后,我們可以看到oracle12c-r2的docker image 已經存在於本地:

 

運行鏡像

# docker run -it --name ora12c-r2 -p 1521:1521 -p 5500:5500 -e ORACLE_SID=xxx -e ORACLE_PDB=xxx -e ORACLE_PWD=xxx -e ORACLE_CHARACTERSET=AL32UTF8 -v /DATA/oracle_12c/sharedData:/opt/oracle/oradata oracle/database:12.2.0.1-se2

這里貼出命令行參數:

復制代碼
Parameters:
   --name:        The name of the container (default: auto generated)
   -p:            The port mapping of the host port to the container port. 
                  Two ports are exposed: 1521 (Oracle Listener), 5500 (OEM Express)
   -e ORACLE_SID: The Oracle Database SID that should be used (default: ORCLCDB)
   -e ORACLE_PDB: The Oracle Database PDB name that should be used (default: ORCLPDB1)
   -e ORACLE_PWD: The Oracle Database SYS, SYSTEM and PDB_ADMIN password (default: auto generated)
   -e ORACLE_CHARACTERSET:
                  The character set to use when creating the database (default: AL32UTF8)
   -v             The data volume to use for the database.
                  Has to be owned by the Unix user "oracle" or set appropriately.
                  If omitted the database will not be persisted over container recreation.
復制代碼

 

第一次運行容器是,會根據我們的指令進行初始化操作,例如安裝oracle instance, 啟動服務等等。。。直到我們看到

 

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

我們的oracle12c-r2數據庫就創建完成。

進入運行的container,連接數據庫:

# docker exec -it ora12c-r2 /bin/bash
# sqlplus sys/<your password>@//localhost:1521/<your SID> as sysdba

 

OK, 我們的工作已經完成了,現在我們就可以在本地使用oracle12c-r2啦 :)  最后,感謝大家的觀看,歡迎留言交流。。。

 

參考資料:

https://blogs.oracle.com/developer/creating-an-oracle-database-docker-image

http://www.projectatomic.io/blog/2016/03/daemon_option_basedevicesize/

https://bobcares.com/blog/docker-container-size/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM