Docker:Docker的简介、安装、使用方法之详细攻略
Docker:Docker的簡介、安裝、使用方法之詳細(xì)攻略
?
?
目錄
Docker的簡介
0.1、知乎對Docker的理解—Docker就是集裝箱
0.2、簡書對Docker的理解—Docker帶來標(biāo)準(zhǔn)化
1、一個完整的Docker有以下幾個部分組成
2、Windows 下面運行 Docker 的兩個主要工具
Docker的安裝
0、基于Windows 的Docker安裝
1、官網(wǎng)下載
2、本地安裝圖文教程
3、Docker測試
Docker的使用方法
1、用戶的應(yīng)用程序遷往Docker容器的五步驟
?
?
Docker的簡介
? ? ? ? ?Docker 是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的 Linux或Windows 機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
0.1、知乎對Docker的理解—Docker就是集裝箱
轉(zhuǎn)自:https://www.zhihu.com/question/28300645/answer/67707287
如有轉(zhuǎn)載,請貼上鏈接,尊重原創(chuàng)
? ? ? ?Docker的思想來自于集裝箱,集裝箱解決了什么問題?在一艘大船上,可以把貨物規(guī)整的擺放起來。并且各種各樣的貨物被集裝箱標(biāo)準(zhǔn)化了,集裝箱和集裝箱之間不會互相影響。那么我就不需要專門運送水果的船和專門運送化學(xué)品的船了。只要這些貨物在集裝箱里封裝的好好的,那我就可以用一艘大船把他們都運走。
? ? ? ?docker就是類似的理念。現(xiàn)在都流行云計算了,云計算就好比大貨輪。docker就是集裝箱。
- 1、docker可以實現(xiàn)虛擬機隔離應(yīng)用環(huán)境:不同的應(yīng)用程序可能會有不同的應(yīng)用環(huán)境,比如.net開發(fā)的網(wǎng)站和php開發(fā)的網(wǎng)站依賴的軟件就不一樣,如果把他們依賴的軟件都安裝在一個服務(wù)器上就要調(diào)試很久,而且很麻煩,還會造成一些沖突。比如IIS和Apache訪問端口沖突。這個時候你就要隔離.net開發(fā)的網(wǎng)站和php開發(fā)的網(wǎng)站。常規(guī)來講,我們可以在服務(wù)器上創(chuàng)建不同的虛擬機在不同的虛擬機上放置不同的應(yīng)用,但是虛擬機開銷比較高。docker可以實現(xiàn)虛擬機隔離應(yīng)用環(huán)境的功能,并且開銷比虛擬機小,小就意味著省錢了。
- 2、docker可以把開發(fā)環(huán)境直接封裝轉(zhuǎn)移給運維:你開發(fā)軟件的時候用的是Ubuntu,但是運維管理的都是centos,運維在把你的軟件從開發(fā)環(huán)境轉(zhuǎn)移到生產(chǎn)環(huán)境的時候就會遇到一些Ubuntu轉(zhuǎn)centos的問題,比如:有個特殊版本的數(shù)據(jù)庫,只有Ubuntu支持,centos不支持,在轉(zhuǎn)移的過程當(dāng)中運維就得想辦法解決這樣的問題。這時候要是有docker你就可以把開發(fā)環(huán)境直接封裝轉(zhuǎn)移給運維,運維直接部署你給他的docker就可以了。而且部署速度快。
- 3、docker部署高效利用內(nèi)存:在服務(wù)器負(fù)載方面,如果你單獨開一個虛擬機,那么虛擬機會占用空閑內(nèi)存的,docker部署的話,這些內(nèi)存就會利用起來。
? ? ? ? ?總之docker就是集裝箱原理。
?
0.2、簡書對Docker的理解—Docker帶來標(biāo)準(zhǔn)化
轉(zhuǎn)自:https://www.jianshu.com/p/6891b1eadde8?
如有轉(zhuǎn)載,請貼上鏈接,尊重原創(chuàng)
? ? ? ? Docker 公司的口號:“Build,Ship,and Run Any App,Anywhere ”,通俗的講就是 “快來用Docker吧,Docke就像集裝箱一樣,用了Docker你的業(yè)務(wù)就可以隨意的、無拘無束的運行在任何地方”。那集裝箱解決了什么問題?
? ? ? ? 在集裝箱之前,貨物運輸沒有統(tǒng)一的標(biāo)準(zhǔn)方式進(jìn)行搬運,于是鐵路、公路、海洋等各種運輸之間,需要大量的人力作為貨物中轉(zhuǎn),效率極低,而且成本很高。集裝箱出現(xiàn)之后,世界上絕大多數(shù)的貨物運輸都可以放到這個神奇的箱子里,然后在公路、鐵路、海洋等所有運輸場景下,這個箱子都可以不用變化形態(tài)直接可以承運,而且中間的中轉(zhuǎn)工作,都可以通過大型機械搞定,效率大大提升。<經(jīng)濟(jì)學(xué)家>雜志說:"沒有集裝箱,就沒有全球化。"
? ? ? ? 經(jīng)濟(jì)全球化的基礎(chǔ)就是現(xiàn)代運輸體系,而一個高度自動化、低成本和低復(fù)雜性的貨物運輸系統(tǒng)的核心就是集裝箱。在1956年集裝箱出現(xiàn)之前,人們很難想象美國的沃爾瑪能夠遍地開花。而在集裝箱出現(xiàn)之后,以至于某件東半球的產(chǎn)品運至紐約銷售,遠(yuǎn)比在紐約近郊生產(chǎn)該產(chǎn)品更劃算。毫不起眼的集裝箱降低了貨物運輸?shù)某杀?實現(xiàn)了貨物運輸?shù)臉?biāo)準(zhǔn)化,以此為基礎(chǔ)逐步建立全球范圍內(nèi)的船舶、港口、航線、公路、中轉(zhuǎn)站、橋梁、隧道、多式聯(lián)運相配套的物流系統(tǒng),世界經(jīng)濟(jì)形態(tài)因此而改變。從此全球化開始,商業(yè)的潛力被進(jìn)一步挖掘......牛逼之處我就不多說了,可是這個箱子為什么這么神奇呢?答案其實也就在上面的描述中,無非就是兩個字:標(biāo)準(zhǔn)。在一艘大船上,可以把貨物規(guī)整的擺放起來。并且各種各樣的貨物被集裝箱標(biāo)準(zhǔn)化了,集裝箱和集裝箱之間不會互相影響。那么我就不需要專門運送水果的船和專門運送化學(xué)品的船了。只要這些貨物在集裝箱里封裝的好好的,那我就可以用一艘大船把他們都運走。
? ? ? ? 如果你正好是一個運維工程師而且你正感覺你的運維環(huán)境一團(tuán)糟,麻煩請你思考一下這是為什么?
- 語言不同:你是不是正在運維著一個使用 php、java、C#甚至 C/C++等用各種語言編寫的應(yīng)用都在運行的環(huán)境里?
- 環(huán)境不同:這個環(huán)境是不是因為某種歷史原因,使你的操作系統(tǒng)運行著各個版本的內(nèi)核甚至還有 windows?
- 版本不同:即使是同樣語言編寫的業(yè)務(wù)也運行著不同版本的庫?
- 各種不同:你的整個系統(tǒng)環(huán)境是不是甚至找不出來兩臺硬件、操作系統(tǒng)、庫版本以及語言版本完全一樣的環(huán)境?
? ? ? ? 于是你每次遇到問題都要去排查,到底那個坑到底在那里?
? ? ? ? 從網(wǎng)絡(luò)、內(nèi)核到應(yīng)用邏輯。你每次遇到產(chǎn)品升級都要在各種環(huán)境上做穩(wěn)定性測試,發(fā)現(xiàn)不同的環(huán)境代碼 crash 的原因都不盡相同。你就像一個老中醫(yī)一樣去經(jīng)歷各種疑難雜癥,如果遇到問題能找到原因甚至都是幸運的,絕大多數(shù)情況是解決了但不知道原因和沒解決自動好了也不知道原因。于是你們在一個特定的公司的環(huán)境中積累著“經(jīng)驗”,成為你們組新手眼中的大神,憑借歷經(jīng)故障養(yǎng)成的條件反射在快速解決不斷發(fā)生的重復(fù)問題,并故弄玄虛的說:這就是工作經(jīng)驗。因為經(jīng)驗經(jīng)常是搞不清楚原因時的最后一個遮羞布。當(dāng)別人抱怨你們部門效率低的時候,你一般的反應(yīng)是:”you can you up,no can no 逼逼!
? ? ? ? 那么我們再來看看 docker 是怎么做的?現(xiàn)在都流行云計算了,云計算就好比大貨輪。docker就是集裝箱。
?
1、一個完整的Docker有以下幾個部分組成
- DockerClient客戶端
- Docker Daemon守護(hù)進(jìn)程
- Docker Image鏡像
- DockerContainer容器
?
2、Windows 下面運行 Docker 的兩個主要工具
- Docker for Windows:新一代的 Windows下的運行平臺。
- DockerToolbox:上一代的運行平臺,安裝參考Docker Toolbox:Docker Toolbox的簡介、安裝、使用方法之詳細(xì)攻略
?
?
?
?
Docker的安裝
pip install docker
?
0、基于Windows 的Docker安裝
參考文章
win10家庭版安裝Docker
? ? ? ?Docker 可以以兩種形式運行在 Windows 上:以 Hyper-V 虛擬機的形式運行 Linux 格式的容器,或者運行原生的 Windows 容器。其中前者運行 Linux 格式的應(yīng)用程序,后者能運行 Windows 應(yīng)用程序。
? ? ? ?如果安裝了win10,可以采用安裝包直接安裝,現(xiàn)在 Docker 有專門的 Win10 專業(yè)版系統(tǒng)的安裝包,需要開啟Hyper-V。
Hyper-V是微軟的一款虛擬化產(chǎn)品,是微軟第一個采用類似Vmware和Citrix開源Xen一樣的基于hypervisor的技術(shù)。Hyper-V 讓你可以在 Windows 上以虛擬機形式運行多個操作系統(tǒng)。
官方文檔提示:HYPER-V 在 64 位版本的 Windows 10 專業(yè)版、 企業(yè)版和教育版上可用。 但是,切記,不適用于Windows10的家庭版。 因為,默認(rèn)情況下win10家庭版是沒有hyper-V的,但是可以通過配置進(jìn)行修改。
?
T1、Windows10家庭版無法安裝docker,需要下載docker toolbox安裝,參考文章
Docker Toolbox:Docker Toolbox的簡介、安裝、使用方法之詳細(xì)攻略
?
T2、Windows10家庭版修改配置,直接安裝docker
?
1、官網(wǎng)下載
https://hub.docker.com/
?
2、本地安裝圖文教程
更新……
?
?
3、Docker測試
更新……
?
?
?
Docker的使用方法
1、用戶的應(yīng)用程序遷往Docker容器的五步驟
? ? ? ?隨著Docker在云計算市場中領(lǐng)先地位的日益穩(wěn)固,容器技術(shù)也成為了一種主流技術(shù)。為了對用戶的應(yīng)用程序使用容器技術(shù),可遵循以下五個步驟。
? ? ? ?Docker容器技術(shù)已在云計算市場中風(fēng)靡一時了,而眾多主流供應(yīng)商則面臨著技術(shù)落后的窘境。那么,是什么讓Docker容器技術(shù)變得如此受歡迎呢?對于剛?cè)腴T的新手來說,容器技術(shù)可實現(xiàn)不同云計算之間應(yīng)用程序的可移植性,以及提供了一個把應(yīng)用程序拆分為分布式組件的方法。此外,用戶還可以管理和擴(kuò)展這些容器成為集群。
? ? ? ?在企業(yè)用戶準(zhǔn)備把應(yīng)用程序遷往容器之前,理解應(yīng)用程序的遷移過程是非常重要的。這里將介紹把用戶應(yīng)用程序遷往Docker容器的五個基本步驟。
步驟1:分解。一般來說,應(yīng)用程序都是復(fù)雜的,它們都有很多的組件。例如,大多數(shù)應(yīng)用程序都需要數(shù)據(jù)庫或中間件服務(wù)的支持以實現(xiàn)對數(shù)據(jù)的存儲、檢索和集成。所以,需要通過設(shè)計和部署把這些服務(wù)拆分成為它們自己的容器。如果一個應(yīng)用程序能夠被拆分成為越多的分布式組件,那么應(yīng)用程序擴(kuò)展的選擇則越多。但是,分布式組件越多也意味著管理的復(fù)雜性越高。
步驟2:選擇基礎(chǔ)映像。當(dāng)執(zhí)行應(yīng)用程序遷移時,應(yīng)盡量避免推倒重來的做法。搜索Docker注冊庫找到一個基本的Docker映像并將其作為應(yīng)用程序的基礎(chǔ)來使用。
? ? ? ?隨著時間的推移,企業(yè)將會發(fā)現(xiàn)這些Docker注冊庫中基本映像的價值所在。請記住,Docker支持著一個Docker開發(fā)人員社區(qū),所以項目的成功與否很大程度上取決于用戶對于映像管理和改良的參與度。
步驟3:安全管理問題。安全性和管理應(yīng)當(dāng)是一個高優(yōu)先級的考慮因素;企業(yè)用戶不應(yīng)再把它們當(dāng)作應(yīng)用程序遷移至容器的最后一步。反之,企業(yè)必須從一開始就做好安全性和管理的規(guī)劃,把它們的功能納入應(yīng)用程序的開發(fā)過程中,并在應(yīng)用程序運行過程中積極主動地關(guān)注這些方面。這就是企業(yè)應(yīng)當(dāng)花大功夫的地方。
? ? ? ?基于容器的應(yīng)用程序是分布式應(yīng)用程序。企業(yè)應(yīng)當(dāng)更新較老的應(yīng)用程序以支持聯(lián)合身份管理方法,這將非常有利于確保分布式應(yīng)用程序的安全性。為了做到這一點,應(yīng)為每一個應(yīng)用程序組件和數(shù)據(jù)提供一個的標(biāo)識符,這個標(biāo)識符可允許企業(yè)在一個細(xì)粒度的級別上進(jìn)行安全性管理。企業(yè)用戶還應(yīng)當(dāng)增加一個日志記錄的方法。
步驟4:增加代碼。為了創(chuàng)建鏡像,企業(yè)用戶需要使用一個Dockerfile來定義映像開發(fā)的必要步驟。一旦創(chuàng)建了映像,企業(yè)用戶就應(yīng)將其添加至Docker Hub。
步驟5:配置測試部署。應(yīng)對在容器中運行的應(yīng)用程序進(jìn)行配置,以便于讓應(yīng)用程序知道可以在哪里連接外部資源或者應(yīng)用程序集群中的其他容器。企業(yè)用戶可以把這些配置部署在容器中或使用環(huán)境變量。
? ? ? ?對基于容器的應(yīng)用程序進(jìn)行測試類似于對其他分布式應(yīng)用程序的測試。企業(yè)可以對每個容器進(jìn)行組件測試,并將容器集群作為一個整體進(jìn)行測試。 確定應(yīng)用程序應(yīng)如何能夠在負(fù)載增加的情況下進(jìn)行擴(kuò)展。如果用戶正在使用一個集群管理器(例如Swarm),則可測試其性能。
? ? ? ?最后,把容器部署到實際生產(chǎn)環(huán)境中。為了積極主動地關(guān)注基于容器的應(yīng)用程序的運行狀況,可考慮實施必要的監(jiān)控和管理機制 。確保打開日志記錄功能。
? ? ? ?很多應(yīng)用程序遷移至云計算都是采用容器技術(shù)的。雖然遷移有一點復(fù)雜,但是容器可以保護(hù)應(yīng)用程序投資并賦予了它一個更長的使用壽命。
?
?
?
?
?
參考文章
Docker
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Docker:Docker的简介、安装、使用方法之详细攻略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成功解决VS编译环境下C++语言出现的异
- 下一篇: Docker Toolbox:Docke