Docker簡介

Docker簡介

俗話說:工慾善其事必先利其器,知其然知其所以然,學習一個技術,需要掌握它的背景知識,技術無非就是條條框框的代碼命令而已,但是需要明白它到底是什麼,是有含義,有什麼背景。就像足球,永遠不打好基礎,永遠不搞懂足球理念。只會一步步的輸下去。來個素質三連來引出Docker。是什麼!能幹嘛!去哪下!

是什麼?

爲什麼會有docker的出現

一款產品從開發到上線,從操作系統,到運行環境,再到應用配置。作爲開發+運維之間的協作我們需要關心很多東西,這也是很多互聯網公司都不得不面對的問題,特別是各種版本的迭代之後,不同版本環境的兼容,對運維人員都是考驗

Docker之所以發展如此迅速,也是因爲它對此給出了一個標準化的解決方案。

環境配置如此麻煩,換一臺機器,就要重來一次,費力費時。很多人想到,能不能從根本上解決問題,軟件可以帶環境安裝?也就是說,安裝的時候,把原始環境一模一樣地複製過來。開發人員利用 Docker 可以消除協作編碼時“在我的機器上可正常工作”的問題。

之前在服務器配置一個應用的運行環境,要安裝各種軟件,就拿正常工作的環境來說吧,Java/Tomcat/MySQL/JDBC驅動包等。安裝和配置這些東西有多麻煩就不說了,它還不能跨平臺。假如我們是在 Windows 上安裝的這些環境,到了 Linux 又得重新裝。況且就算不跨操作系統,換另一臺同樣操作系統的服務器,要移植應用也是非常麻煩的。

傳統上認爲,軟件編碼開發/測試結束後,所產出的成果即是程序或是能夠編譯執行的二進制字節碼等(java爲例)。而爲了讓這些程序可以順利執行,開發團隊也得準備完整的部署文件,讓維運團隊得以部署應用程式,開發需要清楚的告訴運維部署團隊,用的全部配置文件+所有軟件環境。不過,即便如此,仍然常常發生部署失敗的狀況。Docker鏡像的設計,使得Docker得以打破過去「程序即應用」的觀念。透過鏡像(images)將作業系統核心除外,運作應用程式所需要的系統環境,由下而上打包,達到應用程式跨平臺間的無縫接軌運作。

docker理念

Docker是基於Go語言實現的雲開源項目。

Docker的主要目標是“Build,Ship and Run Any App,Anywhere”,也就是通過對應用組件的封裝、分發、部署、運行等生命週期的管理,使用戶的APP(可以是一個WEB應用或數據庫應用等等)及其運行環境能夠做到“一次封裝,到處運行”。

Linux 容器技術的出現就解決了這樣一個問題,而 Docker 就是在它的基礎上發展過來的。將應用運行在 Docker 容器上面,而 Docker 容器在任何操作系統上都是一致的,這就實現了跨平臺、跨服務器。只需要一次配置好環境,換到別的機子上就可以一鍵部署好,大大簡化了操作

一句話總結

解決了運行環境和配置問題軟件容器,方便做持續集成並有助於整體發佈的容器虛擬化技術

能幹嗎?

之前的虛擬機技術

虛擬機(virtual machine)就是帶環境安裝的一種解決方案。

同理爲VMware。

它可以在一種操作系統裏面運行另一種操作系統,比如在Windows 系統裏面運行Linux 系統。應用程序對此毫無感知,因爲虛擬機看上去跟真實系統一模一樣,而對於底層系統來說,虛擬機就是一個普通文件,不需要了就刪掉,對其他部分毫無影響。這類虛擬機完美的運行了另一套系統,能夠使應用程序,操作系統和硬件三者之間的邏輯不變。

虛擬機的缺點:

1 資源佔用多 2 冗餘步驟多 3 啓動慢

容器虛擬化技術

由於前面虛擬機存在這些缺點,Linux 發展出了另一種虛擬化技術:Linux 容器(Linux Containers,縮寫爲 LXC)。

Linux 容器不是模擬一個完整的操作系統,而是對進程進行隔離。有了容器,就可以將軟件運行所需的所有資源打包到一個隔離的容器中。容器與虛擬機不同,不需要捆綁一整套操作系統,只需要軟件工作所需的庫資源和設置。系統因此而變得高效輕量並保證部署在任何環境中的軟件都能始終如一地運行。

比較了 Docker 和傳統虛擬化方式的不同之處:

*傳統虛擬機技術是虛擬出一套硬件後,在其上運行一個完整操作系統,在該系統上再運行所需應用進程;

*而容器內的應用進程直接運行於宿主的內核,容器內沒有自己的內核,而且也沒有進行硬件虛擬。因此容器要比傳統虛擬機更爲輕便。

* 每個容器之間互相隔離,每個容器有自己的文件系統 ,容器之間進程不會相互影響,能區分計算資源。

開發/運維 -- 一次構建、隨處運行

  • 更快的應用交付和部署

傳統的應用開發完成後,需要提供一堆安裝程序和配置說明文檔,安裝部署後需根據配置文檔進行繁雜的配置才能正常運行。Docker化之後只需要交付少量容器鏡像文件,在正式生產環境加載鏡像並運行即可,應用安裝配置在鏡像裏已經內置好,大大節省部署配置和測試驗證時間。

  • 更快捷的升級和擴縮容

隨着微服務架構和Docker的發展,大量的應用會通過微服務方式架構,應用的開發構建將變成搭樂高積木一樣,每個Docker容器將變成一塊“積木”,應用的升級將變得非常容易。當現有的容器不足以支撐業務處理時,可通過鏡像運行新的容器進行快速擴容,使應用系統的擴容從原先的天級變成分鐘級甚至秒級。

  • 更簡單的系統運維

應用容器化運行後,生產環境運行的應用可與開發、測試環境的應用高度一致,容器會將應用程序相關的環境和狀態完全封裝起來,不會因爲底層基礎架構和操作系統的不一致性給應用帶來影響,產生新的BUG。當出現程序異常時,也可以通過測試環境的相同容器進行快速定位和修復。

  • 更高效的計算資源利用

Docker是內核級虛擬化,其不像傳統的虛擬化技術一樣需要額外的Hypervisor支持,所以在一臺物理機上可以運行很多個容器實例,可大大提升物理服務器的CPU和內存的利用率。

去哪下

說了那麼多,還是要看看去哪裏下,目前的docker的中文官網不知道爲啥訪問不了。安裝是很簡單的。

官網

docker官網: http://www.docker.com

docker中文網站:https://www.docker-cn.com/

但是中文網站目前訪問不了,難受

倉庫

Docker Hub 官網: https://hub.docker.com/

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