學(xué)習(xí)指南05container部署服務(wù)詳解_第1頁
學(xué)習(xí)指南05container部署服務(wù)詳解_第2頁
學(xué)習(xí)指南05container部署服務(wù)詳解_第3頁
學(xué)習(xí)指南05container部署服務(wù)詳解_第4頁
學(xué)習(xí)指南05container部署服務(wù)詳解_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Docker05(Container內(nèi) - 部署服務(wù)詳內(nèi) -Container部署服務(wù)詳 1、Docker網(wǎng)絡(luò)概 、內(nèi)容回 、Docker的網(wǎng)絡(luò)概 、查看docker0虛擬網(wǎng)絡(luò)接 、運(yùn)行一個Container查看網(wǎng)絡(luò)的分 、inspect命令詳細(xì)介 、inspect介 、使用inspect查看網(wǎng)絡(luò)信 、使用inspect信息過濾以及詳 2、容器即服務(wù) 、創(chuàng)建HTTPServer 、RunningHTTPServerImageas 、連接到HTTP 、遇到問題與分析方 網(wǎng)絡(luò)原 Dockerfile指令問 、發(fā)布Container端 、網(wǎng)絡(luò)地址轉(zhuǎn) 、獲取網(wǎng)絡(luò)端 PS命 inspect命 port命 、綁定特定IP到 、自動生成Docker主機(jī)端 、EXPOSE命令實(shí) 4、總結(jié)&拾 5、內(nèi)容預(yù) 6、Programming系列附 DockerContainer給容器綁定指定IP自動生成DockerEXPOSE1、Docker網(wǎng)絡(luò)概、內(nèi)容截至目前,我們一點(diǎn)一點(diǎn)的理解了Docker的基本使用技術(shù),了解了如何什么事Image,build運(yùn)行一個ContainerDockerHub的基本使用,還有也順利的搭建了一個Docker的在自己的局域網(wǎng)內(nèi),基礎(chǔ)的東西基本上已經(jīng)掌握,從現(xiàn)在開始我們就來實(shí)驗(yàn)學(xué)習(xí)如何將Docker應(yīng)用于我們的日常工作中,進(jìn)入真正的、Docker的網(wǎng)絡(luò)概像其他網(wǎng)絡(luò)計(jì)算節(jié)點(diǎn)一樣,Docker戶端程序得到,無一例外,如果通過網(wǎng)絡(luò)進(jìn)行節(jié)點(diǎn)的,都是用IP地址進(jìn)行識別的,Docker的內(nèi)部,我們在第一冊中就已經(jīng)了,實(shí)現(xiàn)了一套虛擬的網(wǎng)絡(luò)接口程序,我們先來了解一下Docker大的功能,當(dāng)容器被運(yùn)行之后,Docker便會分配一個IP地址給ContainerDocker,Dockerdocker0IPdocker0個虛擬的接口,當(dāng)然這個IP地址的范圍會排除在你的宿主主機(jī)之外以免引起網(wǎng)絡(luò)地址.容器,這些都是由強(qiáng)大的Docker完成的.默認(rèn)情況下,Docker/16--IPDocker、查看docker0虛擬網(wǎng)絡(luò)接其中地址被分配給了docker0這個虛擬的接口,該IP的范圍是從to、運(yùn)行一個Container查看網(wǎng)containerIP那么他的網(wǎng)關(guān)地址恰巧也會是docker0的地址,我們來驗(yàn)證一下要令講解之中。、inspect果我們使用daemon的方式運(yùn)行一個Container,那么你該如何得知該Container的IP地址是什么呢?這個確實(shí)一個非常棘手的難題,因?yàn)槟悴捎胐aemon的方式運(yùn)行了一個Container你就不能進(jìn)入終端環(huán)境,上面說令將不能使用,那么我們應(yīng)該怎么辦呢?萬能的Docker提供了這樣一個命令,那就是inspect,Docker將他比作.DockerDockerprovidesadockermand,whichisashandyasaarmyknife,andallowustodivedeepintothelow-leveldetailsofthecontaineror、使用inspect查看網(wǎng)絡(luò)信我們來操作一下,一起來熟悉一下他的使用過程,我們先運(yùn)行了一個daemon的ContainerpsIP于是我們運(yùn)行了inspect命令,具體過程如下所示,由于內(nèi)容非常多,我沒有辦法全部截圖內(nèi)容超級多,我們想關(guān)注的內(nèi)容都沒有出現(xiàn),它在下一屏幕,他的輸出內(nèi)容是典型的JSONNetwork、使用inspect信息過濾以Bridge:網(wǎng)橋名稱,這里顯示的Gateway:網(wǎng)關(guān)地址,docker0IPAddress:分配給Container的IPIPPrefixLen:表示你用的是IPV4還是PortMap:該屬性已經(jīng)過期了,都 Ports2、容器即服務(wù)好了,現(xiàn)在我們已經(jīng)了解了Docker的網(wǎng)絡(luò)知識,在這個章節(jié)中,通過一個實(shí)例來演示,如何運(yùn)行一個HTTPservices在Docker的容器中。HTTPServerDockerfile如下所示,我將注釋也寫在了Dockerfile#FROM #Author:AlexWang>##copythe sources.list/etc/apt/#installtheapachehttp apt-getinstall-yapache2&&\apt-getclean#settheapacheENVAPACHE_LOG_DIR/var/log/apache2#launchapache2serverinthe ["/usr/sbin/apache2ctl","-其中上面多了一些COPY指令,原因是因?yàn)閲獾腶p-get源非常的慢,每做一些updte操作要等很久才可以,所以我使用了國內(nèi)的源,拷貝進(jìn)入et/pt下,替換了原來的源文件,執(zhí)行的過程大致如下,由于內(nèi)容比較多,我大概粘貼一部分即可,另外國內(nèi)的源文件,我會放在本文章的后面,讀者可以替換掉你自己機(jī)器上的源數(shù)據(jù)。imagesapache2現(xiàn)在我們的鏡像已經(jīng)制作好了,使用images命令進(jìn)行查看、RunningHTTPServerImageassudodockerrun-d非常不容易(本人網(wǎng)絡(luò)原因)AACHE2的鏡像終于創(chuàng)建完成,我們來使用以下這個鏡像,我們采取運(yùn)行的方式,其實(shí)在以后的工作中基本上都會采用demon的方式來運(yùn)行osudodockerrun-d然后使用logs命令查看apache2AH00558:apache2:Couldnotreliablydeterminetheserver'sfullyname,name,using4.Setthe'ServerName'directivegloballytosuppressIP4,好了,我們HTTP好了,我們使用wget連接一下我們搭建的HttpServer我們還可以 host機(jī)器上使用瀏覽器進(jìn)行一下驗(yàn)證,下面是我的截、遇到問題與apache2Image,build在大家是否已經(jīng)慢慢開始不懷疑我最開始的只有一行命令就可以搭建一個LAMP的運(yùn)也許大家看到文章中的演示都是非常流利的下來的,但是我可是幾經(jīng)周折,其中遇到了不少的問題,然后一個一個慢慢的解決,寫作的時(shí)間都是在我生活的個人實(shí)踐中,因此比較碎片化,解決這些問題浪費(fèi)了好幾天業(yè)余時(shí)間.網(wǎng)絡(luò)原Container,其中apt-get的sources極其的慢,于是查找國內(nèi)的源,但是國內(nèi)的源,并非會有一個安裝包的所有依賴,于是嘗試了很多個國內(nèi)的source。Dockerfile指令問也許大家注意到了,我們上面 中有這樣一段關(guān)鍵的代碼,是這樣的 apt-getinstall-yapache2&&\apt-getcleanapt-getupdate這一句返回的$?不等于0,導(dǎo)致不能運(yùn)行下去,于是我將這一個指令拆分成兩個指令,于是有了 apt-getinstall-yapache2&&\apt-getclean但是還是一如既往,出現(xiàn)下面的截圖失敗信我們增加一個邏輯或,讓update操作總是被執(zhí)行,但是不要計(jì)較他的全部成功與否 apt-getupdate| apt-getupdate|echo“ignoretheupdate apt-getinstall-yapache2&&\apt-getcleanDocker的Host機(jī)還是其他的Container都能對其,但是盡管如此,在Host機(jī)器以一種是將端口一同綁定作為服務(wù)發(fā)布,另外一種是借助于EXPOSE這個Dockerfile的指令、發(fā)布Container我們看一下如何借助于綁定端口的形式,讓外界到我們的服務(wù)呢,Docker的run命令有若干個選項(xiàng),其中-p就是用來進(jìn)行綁定端口信息的,他有四種命令參數(shù),大致如下所示sudodockerrun-d-p80:80--name="portbinding_apache2"HOSTPORTDockerHostIP址,HostPort是當(dāng)前host器的端口,ip是Container的IP地址,containerPort則是Container的端口,我們通過第一紅方式來發(fā)布一個sudodockerrun-d-p80:80--name="portbinding_apache2"我Host機(jī)器的地址為:07,我們通過另外一臺windows機(jī)器來對其進(jìn)行,在瀏覽器上輸入怎么樣,效果是不是出來了,者和Docker的Host機(jī)器是一個局域網(wǎng)中的不同、網(wǎng)絡(luò)地址轉(zhuǎn)借助于發(fā)布容器端口的方式,我們順利的讓Container被所,是不是很神奇呢?Docker實(shí)現(xiàn)這樣無縫的連接,是借助于iptables這一個強(qiáng)大的Linux工具來完成得到我們發(fā)布在DockerHost機(jī)器上的HTTP服務(wù)、獲取網(wǎng)絡(luò)端DaemonContainer常好的方式,我們在本節(jié)中簡單匯總一下,可以有哪些讓我們得到運(yùn)行的ContainerPs命令很好的列出了在啟動運(yùn)行該Containerinspect命第二種非常好的方式當(dāng)然是使 令了,我們看一下運(yùn)行結(jié)果的片段信portIP我之前的文章內(nèi)容,但是使用者可以自己分配IP給一個Container么?答案是肯定的,你sudodockerrun-dsudodockerrun-d-p07:80:80DockerHost器有多個網(wǎng)卡,有多個合法的IP,我們就可以將某一個特定的指定給Docker的容器、自動生成Docker主機(jī)端由于Docker非常的輕量級,因此我們的每一臺DockerHost不可能只運(yùn)行一個HttpserverHttpServer,那么問題Containerlocal80顯同樣使用80端口肯定是行不通的,Docker提供了一種解決方案,自動生成端口并且綁定給Container,我們在本節(jié)中試驗(yàn)測試一下,大家還是看我的實(shí)驗(yàn)流程可以看到我的可以看到我的Host機(jī)器32768端口與Container的80端口發(fā)生了自動生成綁定關(guān)系,我們在外部的需要時(shí)了,雖然這種方式Docker提供給我們了,是我覺得沒有那個人會傻到真的是用這種方式部署應(yīng)用在生產(chǎn)環(huán)境中,雖然我個人在生產(chǎn)環(huán)境中并未使用過Docker,但是這種方式存在非常的不合理,在后文中我將會說一下我的看法.、EXPOSE命令在之前我們通過端口綁定的方式發(fā)布了我們的容器,并且外部的主機(jī)也能夠正確順利的訪問,但是這些都發(fā)生在Container運(yùn)行的過程中,一切看起來很正常,那是因?yàn)槲覀冎牢覀冃枰概赡切┒丝诮o我們的容器,如果我們使用的是第提供的鏡像呢,也就是說我們此時(shí)并不知道我們的HTTPpahe使用的哪個端口,也許不是80端口呢?假設(shè)我們獲得的的的dokerfie,并且增加了expose指令好了,第鏡像已經(jīng)制作成功,其交給了其他人,現(xiàn)在其他人并不知道我們的apache使用的是哪個端口,那這個時(shí)候怎么辦呢?第一種最為愚笨的辦法就是用該鏡像運(yùn)行一次產(chǎn)生一個Container,然后查找配置文件,并且找出端口來,這種方式當(dāng)然可以滿足我們 inspect,我們來看如何使用他找可以看到inspect4、總結(jié)&在本章中我們重點(diǎn)介紹了Doker能傻到如此的地步,給外部使用的用戶,每次都生成一個隨機(jī)的端口,肯定會有一些好的方案作為替代。第一:我們的所有服務(wù)部署到同一臺物理機(jī)器上嚴(yán)重的不合理,因?yàn)槲锢頇C(jī)出現(xiàn)問題,所有的服務(wù)將會全軍覆沒,因此,如果我們?nèi)绻?0臺物理機(jī)器,因此部署10臺HTTPServer的ontiner分別到10臺機(jī)器,并且使用同樣一個端口80.第二:一般我們?yōu)榱烁呖捎茫趹?yīng)用的前置,總會出現(xiàn)Hapoxy或者Ng

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論