docker—— docker基礎入門

如今Docker的使用已經非常普遍,特別在一線互聯網公司。使用Docker技術可以幫助企業快速水平擴展服務,從而到達彈性部署業務的能力。在雲服務概念興起之後,Docker的使用場景和範圍進一步發展,如今在微服務架構越來越流行的情況下,微服務+Docker的完美組合,更加方便微服務架構運維部署落地。

一、什麼是Docker?
Docker 是世界領先的軟件容器平臺。實現了真正意義上的一次編譯到處運行,解決了除協作編碼時“在我的機器上可正常工作”的問題。

Docker 屬於 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。Docker 將應用程序與該程序的依賴,打包在一個文件裏面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器裏運行,就好像在真實的物理機上運行一樣。有了 Docker,就不用擔心環境問題。

二、爲什麼要使用Docker
容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷儘量小。傳統虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啓動 10 個隔離的應用即可。

具體說來,Docker 在如下幾個方面具有較大的優勢。

1、更快速的交付和部署

對開發和運維(devop)人員來說,最希望的就是一次創建或配置,可以在任意地方正常運行。

開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之後,運維人員可以直接使用這個容器來部署代碼。 Docker 可以快速創建容器,快速迭代應用程序,並讓整個過程全程可見,使團隊中的其他成員更容易理解應用程序是如何創建和工作的。 Docker 容器很輕很快!容器的啓動時間是秒級的,大量地節約開發、測試、部署的時間。

2、更高效的虛擬化

Docker 容器的運行不需要額外的 hypervisor 支持,它是內核級的虛擬化,因此可以實現更高的性能和效率。

3、更輕鬆的遷移和擴展

Docker 容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等。 這種兼容性可以讓用戶把一個應用程序從一個平臺直接遷移到另外一個。

4、更簡單的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和更新,從而實現自動化並且高效的管理。docker裏邊容器是可以複用的,比如當你已經擁有了Java容器之後,你想用Tomcat容器,只需要繼承Java容器就可以了。

Docker vs VM
從下圖可以看出,VM是一個運行在宿主機之上的完整的操作系統,VM運行自身操作系統會佔用較多的CPU、內存、硬盤資源。Docker不同於VM,只包含應用程序以及依賴庫,基於libcontainer運行在宿主機上,並處於一個隔離的環境中,這使得Docker更加輕量高效,啓動容器只需幾秒鐘之內完成。由於Docker輕量、資源佔用少,使得Docker可以輕易的應用到構建標準化的應用中。
比如,當分配給虛擬機的內存不夠用了的話,那麼虛擬機會拋出內存異常,而當docker內存不夠了則會去宿主機上獲取內存。虛擬機是完全資源隔離的,而docker是資源共享的。
在這裏插入圖片描述Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的創建和維護。使得 Docker 技術比虛擬機技術更爲輕便、快捷。

作爲一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有衆多的優勢。Docker 容器的啓動可以在秒級實現,這相比傳統的虛擬機方式要快得多;Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器。

相關概念

Docker是CS架構,主要有兩個概念:
Docker daemon: 運行在宿主機上,Docker守護進程,用戶通過Docker client(Docker命令)與Docker daemon交互。
Docker client: Docker 命令行工具,是用戶使用Docker的主要方式,Docker client與Docker daemon通信並將結果返回給用戶,Docker client也可以通過socket或者RESTful api訪問遠程的Docker daemon。

瞭解了Docker的組成,再來了解一下Docker的三個主要概念:

Docker image:鏡像是隻讀的,鏡像中包含有需要運行的文件。鏡像用來創建container,一個鏡像可以運行多個container;鏡像可以通過Dockerfile創建,也可以從Docker hub/registry上下載。
Docker container:容器是Docker的運行組件,啓動一個鏡像就是一個容器,容器是一個隔離環境,多個容器之間不會相互影響,保證容器中的程序運行在一個相對安全的環境中。
Docker hub/registry: 共享和管理Docker鏡像,用戶可以上傳或者下載上面的鏡像,官方地址爲https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。

鏡像就相當於打包好的版本,鏡像啓動之後運行在容器中,倉庫就是裝存儲鏡像的地方。

docker也使用了面向對象的思想,鏡像就相當於一個類,容器就相當於一個對象,一個類可以有多個對象,對象裏面屬性的改變,並不會對這個類本身產生影響。也正因爲一個鏡像可以有多個容器,因此docker本身也是負載均衡的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章