摘要:獲取阿里云加速器地址進入登錄阿里云進入后臺配置加速器點擊后就會重啟并應用配置的鏡像地址了檢查加速器是否生效配置加速器之后,如果拉取鏡像仍然十分緩慢,請手動檢查加速器配置是否生效,在命令行執行,如果從結果中看到了如下內容,說明配置成功。
一、為什么要使用Docker以及與虛擬機的區別? 1.1 為什么要使用Docker
Docker的思想來自于集裝箱。
集裝箱解決了什么問題?在一艘大船上,可以把貨物規整的擺放起來。并且各種各樣的貨物被集裝箱標準化了,集裝箱和集裝箱之間不會互相影響。那么我就不需要專門運送水果的船和專門運送化學品的船了。只要這些貨物在集裝箱里封裝的好好的,那我就可以用一艘大船把他們都運走。
可是這個箱子為什么這么神奇呢?無非就是兩個字:標準。
是的!標準!標準!標準!
按照這個思路,docker 其實跟集裝箱一樣,或者說它想跟集裝箱一樣,成為“標準化”。
這就是 docker 的實質:標準化。
Docker帶來了哪些好處
粗略來說,Docker好處有:
1.保證了線上線下環境的一致性。我們在線下的開發環境使用Docker構建好weaapp的鏡像后,可以直接在線上使用一個鏡像,保證了線上線下環境的一致性,再也不會有在線下開發環境中運行正常,而部署到線上各種錯誤了。
2.極大的簡化了webapp的部署流程。在不使用Docker時,我們部署app時,要先搭建好app運行所需環境,這個過程做過的人都知道多么枯燥繁瑣,一不小心還出錯。而有了Docker,我們只需要直接構建一個我們webapp的鏡像然后將其運行即可,無論在多少臺服務器中部署,都是如此。再比如,使用Docker之前要搭建一個WordPress對于新手來說是有些困難的,而有了Docker,只需要從DockerHub上pull一個WordPress鏡像并啟動就可以了,非常非常方便。
3.實現了沙盒機制,提高了安全性。由于webapp運行在容器中,與操作系統隔離開了,從而使操作系統基本不可能受到破壞,另外如果webapp因為攻擊而癱瘓,并不需要重啟服務器,直接重啟容器或者再啟動一個鏡像就可以了。
4.實現了模塊化,提高了復用性。在二中使用Docker的第二種方式就可以看出,我們將數據庫和Tomcat運行在不同的容器中,從某種角度來說,這也降低了模塊之間的耦合性,便于拓展。比如我們要把MySQL替換為oracle,只需要再構建一個oracle鏡像并啟動與Tomcat連接即可,非常方便。對于我們構建的鏡像,在其他app中直接拿來用就可以了,不必重復勞動。
設想一個如下場景:
我們需要一個webapp,其功能是用戶注冊并將注冊信息插入到數據庫,環境為Ubuntu+Tomcat+Mysql,怎么做?不使用Docker的話,我們通常會這樣做,以Ubuntu為操作系統,然后安裝Tomcat和MySQL,最后把app部署上就可以了。那么使用Docker會怎么做呢,在這個場景下,可以有兩種方式:1.仍然以Ubuntu為操作系統,然后構建一個安裝有MySQL和Tomcat的Docker鏡像,并把app部署到其中,最后啟動Docker鏡像就可以了。看起來好像和不使用Docker基本相同,甚至還要麻煩一些,是這樣嗎?別著急,繼續往下看。2.第二種方式則體現了Docker的"每個容器只做一件事情"的思想,我們構建兩個鏡像,一個僅安裝Tomcat并部署我們的app,另一個僅安裝MySQL,然后啟動這兩個鏡像,得到兩個容器,再利用Docker的容器互聯技術將二者連接(Docker的容器是通過http連接的)。
5.實現了虛擬化,提高硬件利用率。有了Docker,我們可以在一臺服務器上運行很多webapp,充分利用閑置資源。這時候,服務器的操作系統就類似于貨輪,而一個個Docker容器就相當于貨輪上的一個個集裝箱。現在大熱的云服務市場,不少就用了Docker。舉個例子來說,現在我們有一臺操作系統為Ubuntu14.04的服務器,我們構建不同版本的ubuntu鏡像并啟動,并且為不同的用戶分配不同的容器。這樣,用一臺服務器可以虛擬出n個運行著不同操作系統的虛擬服務器,而對于用戶來說,這些是透明的––用戶則認為自己擁有一臺完整的服務器。據我推測,阿里云的服務器就是這么干的。這充分利用了閑置的硬件資源。
總結:
????Docker背后的想法是創建軟件程序可移植的輕量級容器,讓其可以在任何安裝了Docker的機器上運行,并不用關心底層操作系統,就像野心勃勃的造船者們成功創建了集裝箱而不需要考慮裝在哪種船舶上一樣。
????只有一個共同目標:簡化部署流程,提高生產力!
參考:如何通俗解釋Docker是什么?
1.2 Docker和虛擬機的區別Docker基于LXC(Linux容器),在LXC的基礎上進一步封裝,使得操作更簡單,就像操作一個輕量級的虛擬機一樣。
先上圖,vm與docker框架,直觀上來講vm多了一層guest OS,同時Hypervisor會對硬件資源進行虛擬化,docker直接使用硬件資源,所以資源利用率相對docker低也是比較容易理解的
一個IBM測試案例,關于計算能力的,對于kvm為什么會有這么大的性能損失,一方面是因為虛擬機增加了一層虛擬硬件層,運行在虛擬機上的應用程序在進行數值計算時是運行在Hypervisor虛擬的CPU上的;另外一方面是由于計算程序本身的特性導致的差異。虛擬機虛擬的cpu架構不同于實際cpu架構,數值計算程序一般針對特定的cpu架構有一定的優化措施,虛擬化使這些措施作廢,甚至起到反效果。
參考:docker與虛擬機性能比較
總結:
二、使用Docker的正確姿勢集裝箱:程序部署,保證運行環境不會出錯。
標準化:
(1)運輸方式:QQ/郵件==>>從倉庫(hub.docker.com)獲取。
(2)存儲方式:應用程序。
(3)API接口:REST api接口,統一控制所有應用。
隔離:Linux內核限制機制LXC。LXC是一種內核虛擬化技術,可以提供輕量級的虛擬化,以便隔離進程和資源。
三、Docker項目架構????Docker使用C/S架構,通過docker客戶端連接到Docker服務器上從而管理Docker服務器里面的鏡像和容器,類似于git的架構。
四、三個核心概念:鏡像、容器、倉庫三個Docker基本概念
Image(鏡像):類似于模板,包含軟件運行環境和代碼。例如包含完整的CentOS系統,并安裝了JRE。鏡像用于創建Docker容器,鏡像本身是只讀的。
Container(容器):Docker利用容器來運行應用,容器是從鏡像創建的運行實例。它可以被啟動、停止、刪除,每個容器相互隔離。
Repository(倉庫): 幾種存放Docker鏡像的場所。最大的倉庫未Dockey Hub,國內網易蜂巢:https://c.163.com等。一個倉庫包含多個鏡像。倉庫可以分為私有和共有。私有的倉庫可以push和pull。倉庫注冊服務器(Registry)往往包含多個倉庫。
Build-構建鏡像 - 集裝箱 - 鏡像
Ship-運輸鏡像(從倉庫和我們的主機上運輸)- 碼頭 - 倉庫
Run- 運行鏡像(運行的鏡像就是一個容器,可以當成一個“虛擬機”) - 運行程序的地方 - 容器
docker鏡像文件都是只讀的,只有最上層是可以寫
容器的本質是一個進程。
Docker系統有兩個程序:docker服務端和docker客戶端。其中docker服務端是一個服務進程,管理著所有的容器。docker客戶端則扮演著docker服務端的遠程控制器,可以用來控制docker的服務端進程。大部分情況下,docker服務端和客戶端運行在一臺機器上。
檢查docker的版本,這樣可以用來確認docker服務在運行并可通過客戶端鏈接。
$docker version五、鏡像加速
????鑒于國內網絡問題,后續拉取 Docker 鏡像十分緩慢,強烈建議安裝 Docker 之后配置 國內鏡像加速。
5.1 獲取阿里云加速器地址1.進入http://dev.aliyun.com
2.登錄阿里云進入后臺
點擊?Apply&Restart?后 Docker 就會重啟并應用配置的鏡像地址了
5.3 檢查加速器是否生效配置加速器之后,如果拉取鏡像仍然十分緩慢,請手動檢查加速器配置是否生效,在命令行執行?docker info,如果從結果中看到了如下內容,說明配置成功。
【下一篇:Docker簡介、常用命令與實踐(二)】參考教程:Docker之編程環境應用
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27455.html
摘要:上一篇簡介常用命令與實踐一六鏡像操作獲取鏡像下載鏡像到本地上有大量的高質量的鏡像可以用,這里我們就說一下怎么獲取這些鏡像。 【上一篇:Docker簡介、常用命令與實踐(一)】 六、Docker鏡像操作 6.1 獲取鏡像(下載鏡像到本地) Docker Hub?上有大量的高質量的鏡像可以用,這里我們就說一下怎么獲取這些鏡像。從 Docker 鏡像倉庫獲取鏡像的命令是?docker pul...
摘要:由于支持在鏡像的基礎上進行定制,使得擴展變得更簡單。而官方也維護了一大批高質量的鏡像,大大降低了鏡像的制作成本基本概念倉庫提供了倉庫用于存放制作好的鏡像,方便使用者獲取,在本地可通知配置多個。 Docker 是使用 GoLang 開發的開源容器引擎,可以方便的打包開發好的應用,然后分發到任意 linux 主機上。 與傳統的虛擬機相比擁有以下優勢: 高效的系統資源利用率由于不需要進行硬...
閱讀 2447·2021-10-14 09:42
閱讀 1138·2021-09-22 15:09
閱讀 3545·2021-09-09 09:33
閱讀 3026·2021-09-07 09:59
閱讀 3639·2021-09-03 10:34
閱讀 3532·2021-07-26 22:01
閱讀 2822·2019-08-30 13:06
閱讀 1203·2019-08-30 10:48