好記性不如爛筆頭,記錄下來的才是永恒旋膳!誠邀關注澎语。本文已收錄入GitHub:https://github.com/wind7rui/JavaHub。
聊聊Oracle
2013年“去IOE”這個話題在IT圈火熱起來,它是由阿里巴巴提出的概念擅羞,意思是在IT架構(gòu)中尸变,去掉IBM的小型機、Oracle數(shù)據(jù)庫减俏、EMC存儲設備召烂,以自己在開源軟件基礎上開發(fā)的系統(tǒng)取而代之。雖然娃承,Oracle數(shù)據(jù)庫以容量大奏夫、穩(wěn)定、安全历筝、性能高自居酗昼,但是這些高性能指標都需要厚實的資金支撐(硬件不斷擴展資金、技術(shù)咨詢和服務費)梳猪,所以當年很多私有麻削、民辦企業(yè)緊跟其后,逐漸不再使用Oracle春弥。
回想過去呛哟,為了可以隨時使用Oracle數(shù)據(jù)庫,不得不在自己的筆記本電腦上安裝匿沛,不知道各位有沒有經(jīng)歷過其安裝過程扫责,安裝過程很漫長,而且可能會遇到各種奇葩的錯誤信息俺祠,有錯誤中斷安裝后,需要再次重新安裝借帘。安裝過程中會在系統(tǒng)上安裝很多輔助軟件蜘渣,有些還被設置成了開機自啟動服務。在經(jīng)歷過各種安裝重啟之后肺然,好不容易安裝完成蔫缸,啟動起來試試吧,接下來等待的就是漫長的啟動過程际起,因為它需要加載很多東西拾碌,這時候如果電腦配置不行,散熱風扇就開始嘶吼了街望⌒O瑁總結(jié)一下,個人筆記本電腦上使用物理安裝的方式使用Oracle數(shù)據(jù)庫灾前,不容易防症!
選Vagrant,還是Docker
如果不是有特殊需求,我是不會再碰Oracle了蔫敲。這不饲嗽,最近因某些特殊原因不得不再次安裝使用Oracle。不過奈嘿,現(xiàn)在都2020年了貌虾,誰還直接物理安裝啊裙犹!我很早之前的文章《開發(fā)環(huán)境利器vagrant》和《再談Vagrant》詳細介紹了不通過物理安裝尽狠,直接使用Vargant快速打造開發(fā)環(huán)境,利用虛擬化技術(shù)將這些開發(fā)環(huán)境和軟件安裝到虛擬機上伯诬,通過Vagrant可以輕松實現(xiàn)對虛擬機的管理晚唇、自動化配置和安裝開發(fā)環(huán)境及各類軟件,這種Vagrant簡單快捷盗似、占用的物理資源也少哩陕,用的不爽了可以隨時移除。
不過赫舒,Vagrant不是今天的主角悍及,我們要聊的是Docker!Docker是什么接癌?Docker是一個開源的應用容器引擎心赶,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機器上缺猛。舉個簡單的例子缨叫,我們把開發(fā)好的war包或可執(zhí)行jar包在安裝了JDK的Linux系統(tǒng)上部署,并將相關的依賴及配置也都配置好荔燎,然后直接將他們打包成一個鏡像耻姥,拿著這個鏡像就可以隨時部署了,不用在部署的機器上安裝一系列復雜的軟件環(huán)境了(JDK有咨、數(shù)據(jù)庫琐簇、Redis等),不用再擔心“我這可以運行座享,你那怎么就不行”婉商,也不需要再考慮各種兼容性問題,因為這個鏡像就是一個可直接交付的包含運行環(huán)境的成品渣叛,真正做到一次創(chuàng)建鏡像丈秩,任意正常運行。Docker提供了鏡像倉庫淳衙,倉庫中有很多打包好的癣籽、可以拿過來直接部署的鏡像挽唉,例如Oracle、Nginx等筷狼。當然瓶籽,這只是Docker的部分功能,更多有關Docker的介紹請移步搜索引擎埂材。
Vagrant和Docker都使用了虛擬化技術(shù)塑顺,Vagrant是基于Virtualbox的虛擬機技術(shù),Docker則是基于輕量級容器虛擬技術(shù)俏险,兩者的區(qū)別就像進程和線程严拒,虛擬機內(nèi)可以包含很多容器,正如一個進程中可以包含很多線程竖独,所以前者基于虛擬機顯重裤唠,后者基于容器虛擬技術(shù)顯輕。不過莹痢,它們的側(cè)重點不同种蘸,Vagrant是開發(fā)環(huán)境的部署工具,這一點可以通過它官網(wǎng)的介紹而知竞膳,而Docker是運行環(huán)境的部署工具航瞭。
安裝Docker
相對于Vagrant的使用,Docker的操作成本會小很多坦辟,最主要的是Docker使用起來快刊侯、省。所以锉走,本篇內(nèi)容是在Windows7系統(tǒng)上使用使用Docker部署Oracle滨彻。為什么是Windows7,而不是Windows10挪蹭?雖然Win10很炫亭饵,但是我更喜歡低調(diào)實用的Win7,不知道你們是不是也這么認為嚣潜。不過冬骚,如果你是Win10用戶也沒關系椅贱,因為本篇內(nèi)容也會帶著介紹win10上如何部署懂算,不要走開哦!
在Windows系統(tǒng)上安裝Docker庇麦,操作系統(tǒng)的版本不同方式也不一樣计技。Win7和Win8系統(tǒng)不支持Hyper-V,所以只能安裝Docker Toolbox的方式使用Docker山橄,它利用VirtualBox建立Linux虛擬機垮媒,在Linux虛擬機中安裝Docker服務端和客戶端。Win10操作系統(tǒng)可以利用Hyper-V虛擬化技術(shù),所以直接安裝Docker for Windows睡雇,它在Windows上安裝docker服務端和客戶端萌衬,安裝前需要開啟Hyper-V,具體操作:控制面板-程序-程序和功能-啟用或關閉Windows功能-Hyper-V它抱。
Win7/Win8上安裝Docker Toolbox秕豫,目前最高版本是v19.03.1,根據(jù)官網(wǎng)的指引需要到github上下載观蓄,231MB需要下載很久混移,因為很慢!所以侮穿,我們需要借助國內(nèi)的下載地址歌径,訪問https://get.daocloud.io/toolbox/下載DockerToolbox-19.03.1.exe。
Win10系統(tǒng)安裝Docker for Windows亲茅,在這里下載https://get.daocloud.io/#install-docker-for-mac-windows回铛。
如果你是MacOS系統(tǒng),系統(tǒng)版本低于OS X 10.10.3芯急,在這里https://get.daocloud.io/toolbox/下載安裝DockerToolbox-19.03.1.pkg勺届,如果系統(tǒng)是OS X 10.10.3或者更高版本,需要下載安裝Docker for Mac娶耍,在這里下載https://get.daocloud.io/#install-docker-for-mac-windows免姿。
對于Windows系統(tǒng),在安裝前需要確認BIOS設置中是否開啟了“Virsualization Technology”榕酒,具體操作:開機快速按BIOS設置鍵(各個品牌電腦不同胚膊,如果不知道通過搜索引擎查詢),進入BIOS界面想鹰,依次選擇Configuration -> Intel Virtual Technology -> Enabled(注意:因主板不同紊婉,名稱和位置可能不一樣,主要找Virtual字樣的設置)辑舷。
Win7/Win8系統(tǒng)雙擊下載的DockerToolbox-19.03.1.exe喻犁,根據(jù)指引安裝,如果VirualBox或Git已經(jīng)安裝何缓,可以不勾選安裝肢础,下圖中這個選項建議勾選。
安裝完成后碌廓,桌面上會出現(xiàn)Docker Quickstart Terminal快捷鍵圖標传轰,首次雙擊它進入命令行窗口后,界面提示正在創(chuàng)建一個名字叫default的虛擬機谷婆,創(chuàng)建過程會自動從github上下載boot2docker.iso文件慨蛙,這個過程非常緩慢辽聊,而且大多數(shù)情況下會出現(xiàn)timeout,如果不能正常下載期贫,虛擬機創(chuàng)建失敗跟匆。
如果碰巧你可以非常快速的下載完成通砍,下面的這步驟可以省了贾铝。其實,仔細查看官方的DockerToolbox-19.03.1.exe說明埠帕,安裝包是包含boot2docker.iso文件的垢揩。
安裝DockerToolbox-19.03.1.exe后,boot2docker.iso文件被存放到了安裝目錄下敛瓷,例如我安裝時選擇的目錄是C:\Program Files\Docker Toolbox叁巨,直接將boot2docker.iso拷貝到C:\Users\Administrator.docker\machine\cache下(其中,Administrator是我的用戶名呐籽,可能和你的不一樣)锋勺,然后斷開有線網(wǎng)和無線網(wǎng),重新打開Docker Quickstart Terminal狡蝶,就可以創(chuàng)建成功了(如果你嘗試了還不行庶橱,評論留言@我直接發(fā)你),創(chuàng)建的default虛擬機IP默認是192.168.99.100贪惹,啟動成功后的界面如下圖苏章。
Win10系統(tǒng)雙擊下載的Docker for Windows Installer安裝文件,根據(jù)指引安裝奏瞬。安裝完成后枫绅,Docker會自動啟動,并且右下角通知欄上會出現(xiàn)個小鯨魚的圖標硼端,這個小圖標可以右擊選擇settings并淋,在這里可以做更多配置,例如設置國內(nèi)鏡像地址珍昨。win+R快捷鍵打開運行窗口县耽,輸入cmd,在命令行窗口輸入docker --version驗證安裝是否成功镣典,正常輸出Docker版本則安裝成功兔毙。
部署Oracle
本文通過使用Docker部署Oracle來學習一下Docker的入門級使用。開始下面的內(nèi)容之前骆撇,我們先了解一下Docker中的鏡像瞒御、容器和倉庫父叙。鏡像是一個特殊的模板文件神郊,它里面包含了運行時所需的程序肴裙、庫、資源涌乳、配置等文件外蜻懦,還包含了一些為運行時準備的一些配置參數(shù)(如匿名卷、環(huán)境變量夕晓、用戶等)宛乃,例如一個MySQL鏡像,它包含一個完整的Linux系統(tǒng)蒸辆,在這個系統(tǒng)上安裝了MySQL數(shù)據(jù)庫和其它相關的資源文件和配置征炼。容器是由鏡像創(chuàng)建的運行實例,運行鏡像就會創(chuàng)建一個容器躬贡。鏡像和容器的關系谆奥,打個比方,就像Java中的類和對象的關系拂玻。倉庫酸些,這個很好理解了,既然鏡像是模板檐蚜,那么就需要有存儲的地方魄懂,倉庫就是管理鏡像的地方,我們可以從倉庫中下載鏡像闯第,也可以向倉庫提交鏡像市栗。
默認情況下,我們使用Docker時咳短,它會使用自己的鏡像倉庫地址肃廓,但是從這個地址下載鏡像會很慢,所以诲泌,我們需要配置國內(nèi)的鏡像加速器地址盲赊。國內(nèi)的加速器這里推薦使用阿里云,具體如何獲取阿里云鏡像加速器地址敷扫,看這里https://help.aliyun.com/document_detail/60750.html哀蘑。獲取到阿里云鏡像加速器后,Win7/Win8系統(tǒng)在打開Docker Quickstart Terminal后執(zhí)行如下命令:
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS=' --registry-mirror=自己的加速器地址 |g" /var/lib/boot2docker/profile
然后執(zhí)行exit葵第,可以看到退出了default虛擬機绘迁,接著依次執(zhí)行如下命令:
docker-machine env default
eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env default) --這一步是根據(jù)docker-machine env default執(zhí)行后,提示需要執(zhí)行的卒密,如果你沒有這個提示缀台,請忽略
docker-machine restart default
docker-machine env --這一步是根據(jù)docker-machine restart default執(zhí)行后,提示需要執(zhí)行的哮奇,如果你沒有這個提示膛腐,請忽略
查看是否配置成功睛约,使用docker info命令,如果輸出的信息(內(nèi)容很長哲身,慢慢找)中有--registry-mirror=自己的加速器地址辩涝,那就表明配置成功了。
Win10操作系統(tǒng)勘天,還記得我上面說的那個右下角的小鯨魚的圖標嘛怔揩,右鍵選擇settings,打開配置窗口后左側(cè)導航菜單選擇“Docker Daemon”脯丝。編輯窗口內(nèi)的JSON串商膊,填寫下方加速器地址,編輯完成后點擊Apply保存按鈕宠进,等待Docker重啟并應用配置的鏡像加速器翘狱。
{ "registry-mirrors": ["自己的加速器地址"]}
Docker Hub是Docker官方維護的一個公共倉庫,存放著Docker及其組件的所有資源砰苍,包括鏡像潦匈,我們要想使用Docker Hub中的鏡像,首先需要先注冊一個賬號赚导,注冊地址https://hub.docker.com/茬缩,記住注冊的Docker ID和密碼,后面會用到吼旧。
注冊完成后凰锡,在https://hub.docker.com/search頁面搜索Oracle鏡像。
頁面會列出很多鏡像圈暗,我們根據(jù)需要選擇某一個掂为,我這里選擇wnameless/oracle-xe-11g-r2這個鏡像,點擊進入詳情頁面员串,在這個頁面會詳細的描述這個鏡像如何使用勇哗,以及鏡像里有什么。
因為Docker Quickstart Terminal和命令行窗口都不是很好用寸齐,所以欲诺,我們可以使用常用的ssh軟件登錄到創(chuàng)建的default虛擬機,我這里使用SecureCRT渺鹦,其它軟件如XShell也可以扰法。登錄主機名:192.168.99.100,端口:22毅厚,用戶名:docker塞颁,密碼:tcuser,登錄成功后如下圖。
輸入docker login命令祠锣,根據(jù)指引完成登錄Docker Hub操作酷窥。
根據(jù)剛剛在Docker Hub頁面搜索wnameless/oracle-xe-11g-r2得到的使用指引,我們需要先輸入docker pull wnameless/oracle-xe-11g-r2命令從鏡像倉庫中拉取該鏡像到本地锤岸,拉取完成后,輸入docker images查看本地有哪些鏡像可以使用板乙。
輸入docker run -d -p 1522:22 -p 1521:1521 --name awesome_lalande wnameless/oracle-xe-11g-r2命令是偷,部署Oracle鏡像,創(chuàng)建一個新的容器募逞,得到一個可使用的Oracle數(shù)據(jù)庫服務蛋铆,啟動過程之快令人驚訝,秒級別的放接。
上面命令參數(shù)解釋:
docker run:創(chuàng)建一個新的容器并運行命令刺啦;
-d:后臺運行容器,并返回容器ID纠脾;
-p:指定端口映射玛瘸,格式為:主機(宿主)端口:容器端口,如1521:1521苟蹈;
--name:指定容器的名稱糊渊,如awesome_lalande;
wnameless/oracle-xe-11g-r2:要運行的鏡像慧脱;
輸入docker ps查看有哪些正在運行的容器渺绒,如果想列出所有的容器,包括未運行的菱鸥,可以使用docker ps -a宗兼。
可以看到我們剛剛通過docker run命令部署的wnameless/oracle-xe-11g-r2鏡像已經(jīng)啟動成功了,創(chuàng)建的容器ID為1050ac76bdcf氮采。
如果你想看容器的運行啟動日志殷绍,輸入“docker logs CONTAINER_ID”,CONTAINER_ID就是docker ps輸出的CONTAINER_ID鹊漠。
如果你想進入到Oracle容器中格遭,也就是運行Oracle的Linux系統(tǒng)中,輸入“docker exec -it CONTAINER_ID /bin/bash”彰檬,CONTAINER_ID同樣是docker ps輸出的CONTAINER_ID瓷叫。退出容器,輸入exit楞陷。
如果想停止運行中的容器怔鳖,可以輸入docker stop 容器名稱,例如docker stop awesome_lalande固蛾,這個awesome_lalande是我們上面使用docker run時通過--name參數(shù)指定的容器名稱结执,如果你不確定容器名稱度陆,可以通過docker ps命令查看,輸出的最后一列就是容器名稱献幔。
啟動一個已停止運行的容器懂傀,可以輸入docker start 容器名稱,例如docker start awesome_lalande蜡感。當日也可以使用docker restart命令重啟容器蹬蚁,例如docker restart awesome_lalande。
到這里郑兴,我們就可以使用數(shù)據(jù)庫操作客戶端連接Oracle數(shù)據(jù)庫并使用了犀斋。我這里使用Navicat,連接信息如下:hostname:192.168.99.10情连,port:1521叽粹,sid:xe,username:system却舀,password:oracle虫几。
小結(jié)
本篇內(nèi)容基于Oracle鏡像,當然你有可以試試其它鏡像挽拔,例如MySQL持钉、Nginx等,使用方式都是一樣的篱昔,具體如何使用鏡像每强,可以根據(jù)上面說的,查看Docker Hub中搜索得到的鏡像詳細描述州刽。
本篇內(nèi)容只是一個入門級的使用空执,Docker有很多很強大的功能,后續(xù)我也會結(jié)合實際工作中的使用經(jīng)歷不斷分享穗椅,歡迎朋友們繼續(xù)關注辨绊!
如果你還不知道Docker是什么,或者還沒使用過匹表,真的需要好好補補課了门坷,不是因為它流行,而是真的很好用袍镀,真香默蚌!
聊個題外話,關注我的朋友可能發(fā)現(xiàn)了苇羡,我更新文章不是很固定绸吸,有時一周一更,有時兩周一更,我不是專門做自媒體的锦茁,寫作只為了記錄(記憶不可靠)和分享(開源)攘轩,所以沒必要為了討好別人浪費時間到處找文章、轉(zhuǎn)發(fā)別人未授權(quán)的文章码俩,一天一更度帮。
以前看到好的文章也會分享、做排版稿存,但是后來想想基本是在消耗我的時間笨篷,自己也沒有得到技術(shù)積累,從那之后索性只分享自己的原創(chuàng)挠铲。我也會在圈里分享我寫的文章冕屯,畢竟這些都是我早上早起擠時間整理的寂诱。所以拂苹,關注我你會看到一手原創(chuàng)、有料的技術(shù)文章痰洒!
學之多瓢棒,而后知之少!朋友們【點贊】是我持續(xù)更新的最大動力丘喻,我們下期見脯宿!