手把手教你如何從鏡像搭建到構建容器?


Dockerfile是由一系列命令和參數構成的腳本,這些命令應用於基礎鏡像並最終創建一個新的鏡像。它們簡化了從頭到尾的流程並極大的簡化了部署工作。Dockerfile從FROM命令開始,緊接着跟隨者各種方法,命令和參數。其產出為一個新的可以用於創建容器的鏡像。水族趣聞

 

▲作用

 ▪ 對於開發人員:可以為開發團隊提供一個完全一致的開發環境。
 ▪ 對於測試人員:可以直接拿開發時所構建的鏡像或者通過Dockerfile文件構建一個新的鏡像開始工作了。
 ▪ 對於運維人員:在部署時,可以實現應用的無縫移植。

 

▲組成

 

 

▲構建鏡像

創建完一個Dockerfile文件之后並在其當前目錄下運行docker build -t new_image_name:tag .命令生成一個新的鏡像。

 

【中間件Dockerfile鏡像的構建】

本次我們僅將中間件部分轉移到docker中,數據庫依舊是用原來虛擬機上的數據庫,所以我們的Dockerfile主要任務有:
▪ 配置中間件運行環境(依賴包及環境變量)
▪ 配置oracle即時客戶端,用於連接原虛擬機的數據庫
▪ 其他一些雜項配置等

Dockerfile

 

鏡像制作
新建/qx/centos_ssh文件夾,將Dockerfile拷貝到目錄下,並新建source文件夾,文件夾中存放如下資料

上面basic-10.2.0.5.0-linux.zip、sqlplus-10.2.0.5.0-linux.zip為oracle即時客戶端,profile中是環境變量,tnsnames.ora是我們需要連接的tns配置,可以直接從待遷移機器上拷過來即可。
切換到/qx/centos_ssh目錄下,執行

等待鏡像構建完成,可能需要一會兒。完成之后,執行

查看鏡像列表

Dockerfile構建容器

Dockerfile中我們說過,創建掛載點,注意在run時需用-v實際指定具體的宿主機目錄。我們先將hundsun下的三個目錄,包括appcom,linux.i386,workspace拷貝到宿主機器上,例如

然后我們創建容器時就將/home/hundsun/uf_114下的三個目錄分別掛載到我們容器中的/home/hundsun/下的三個目錄中

除此之外,我們還需要根據需要映射端口,如22,9002,9004等。最終,我們的命令如下

由於我們Dockerfile中最后有一條啟動ssh的cmd,所以這里我們不用docker run -it xxx /bin/bash,而是用-d后台運行,因為如果有docker run -it xxx /bin/bash,就會覆蓋Dockerfile中的最后一條cmd命令,導致ssh不能正常啟動。

上面執行成功后,我們通過

進入容器,后面就是與原來虛擬機操作一樣的。由於上面我們上面映射了2225端口到22端口上,所以我們可以直接通過宿主機ip:2225連接到容器中,可通過xshell,xftp等工具直接連接。
還有9002和9004端口,也可以通過hsadmin,客戶端等直接連接宿主機,即可連接到容器內。而我們掛載的三個文件夾,則可以直接連接宿主機進行升級操作,會同步更新到容器內。

 

用Dockefile安裝oracle

上面主要是完成了中間件環境Dockerfile的編寫及構建,數據庫依舊采用的是虛擬機管理,那么接下來我們寫一個安裝oracle的Dockerfile,由於有了上面的基礎,這里就大概的介紹一下流程。

手工安裝oracle是一個非常麻煩的事情,需要改一堆配置,需要嘗試的可以看看linux社區的Docker中安裝Oracle 11.2.0.4這篇文章。在github上找到了一個寫好的,但是有點問題,我們就基於此來修改並新增一些個性化的功能,fork了一個到這兒。

然后我們將上面所需要的文件都放到docker宿主機上,如下:

先看下Dockerfile

 

其實主要的步驟是:
1./assets/setup.sh腳本中主要是安裝oracle所需依賴、oracle用戶組、以及修改一些系統文件以滿足oracle安裝檢查,新增了安裝ssh服務。

2.切換目錄到/qx/oracle_image/下,通過,構建一個名為oracle的鏡像。

3.構建完鏡像,Dockerfile的任務已經完成,接着創建並啟動容器。

4.

5./assets/entrypoint.sh是在創建容器時執行的,里面主要安裝oracle,通過調用/assets/install.sh安裝。

6.安裝完或者已經安裝(比如第二次啟動時),繼續執行/assets/entrypoint_oracle.sh腳本。

7./assets/entrypoint_oracle.sh這個腳本主要時建庫以及啟動數據庫。

8.至此,數據庫已經安裝完畢,建庫完畢,啟動完畢。

9.linux用戶名:root/install      密碼:oracle/install。

10.數據庫SERVICE_NAME = ORCL,sys密碼oracle。

 

擴展閱讀

南美洲電光美人

地圖魚怎么才能養好?

紅綠燈魚的記憶

藍色星球2翻車魚介紹


免責聲明!

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



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