全面的Docker快速入門教程

前言:

  都2021年了,你還在爲了安裝一個開發或者部署環境、軟件而花費半天的時間嗎?你還在解決開發環境能夠正常訪問,而發佈測試環境無法正常訪問的問題嗎?你還在爲持續集成和持續交付(CI / CD)工作流程苦惱嗎?那還在猶豫是什麼,Docker能夠完美的解決你遇到這所有的問題。

Docker是什麼?

  Docker 是一個開源的應用容器引擎,基於 Golang 語言開發,可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 服務器。容器是一個沙箱機制,相互之間不會有影響(類似於我們手機上運行的 app),並且容器開銷是很低的。

  Docker 是一個供開發人員和系統管理員構建、運行和與容器共享應用程序的平臺。使用容器部署應用程序稱爲容器化。容器並不是新事物,但它們用於輕鬆部署應用程序卻是新鮮的。

注意:Docker並非是一個通用的容器工具,它依賴於已存在並運行的Linux內核環境。

Docker的優勢有哪些?

  • 靈活性:即使是最複雜的應用程序也可以容器化。
  • 輕量級:容器利用並共享主機內核,使它們在系統資源方面比虛擬機更有效率。
  • 可移植:您可以在本地構建,部署到雲上,並在任何地方運行。
  • 松耦合:容器是高度自給自足和封裝的,允許您在不影響其他容器的情況下替換或升級其中一個。
  • 可擴展:您可以跨數據中心增加和自動分發容器副本。
  • 安全性:容器對進程應用主動約束和隔離,而不需要用戶進行任何配置。

Docker的作用?

  Docker 是一個用於開發、傳送和運行應用程序的開放平臺。Docker 使您能夠將應用程序與基礎設施分開,以便您可以快速交付軟件。使用 Docker,您可以像管理應用程序一樣管理基礎設施。通過利用 Docker 的快速交付、測試和部署代碼的方法,您可以顯着減少編寫代碼和在生產中運行代碼之間的延遲。Docker(opens new window)是個劃時代的開源項目,它徹底釋放了計算虛擬化的威力,極大提高了應用的維護效率,降低了雲計算應用開發的成本!使用 Docker,可以讓應用的部署、測試和分發都變得前所未有的高效和輕鬆!無論是應用開發者、運維人員、還是其他信息技術從業人員,都有必要認識和掌握 Docker,節約有限的生命。

Docker主要用來解決什麼問題?

Docker的出現主要就是爲了解決:在我的機器上運行時正常的爲什麼到你的機器上就運行不正常了。

  比如你寫一個Web應用,並且本地調試沒有任何問題。這時候你想發給你的朋友試試看或者發佈部署到遠程的雲服務器上查看效果,那麼首先你需要配置和你本地相同的軟件環境,如數據庫,Web服務器(IIS,Tomcat,Nginx),必要的插件,庫等等。而這你還不能保證的你的軟件一定能夠運行起來,因爲別人可能用完全不同的操作系統,即便是使用Linux每種發行版也會有微小的區別。

爲了模擬完全相同的本地開發環境。

我們首先想到的就是虛擬機,但是虛擬機需要模擬硬件,運行整個操作系統不但體積臃腫內存佔用高,程序的性能也會受到影響。

如下圖是比較常用的虛擬機:

Docker的脫穎而出:

  這時候Dokcer就派上了用場,Docker在概念上與虛擬機非常類似。但是Docker更輕量,它不會去模擬底層的硬件 ,只會爲每一個應用提供完全隔離的運行環境。你可以在容器中配置不同的應用環境,並且不用的環境之間互相不影響,這個“環境”在Docker中也被稱作爲Container(容器)。

 

Docker和虛擬機技術的區別?

  Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的創建和維護。使得 Docker技術比虛擬機技術更爲輕便、快捷。

下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處。傳統虛擬機技術是虛擬出一套硬件後,在其上運行一個完整操作系統,在該系統上再運行所需應用進程;而容器內的應用進程直接運行於宿主的內核,容器內沒有自己的內核,而且也沒有進行硬件虛擬。因此容器要比傳統虛擬機更爲輕便。

 

 

如果想詳細瞭解,可以參考文章:docker與虛擬機的區別👉

Docker容器和虛擬機的區別總結:

特性

docker容器

虛擬機

啓動

秒級

分鐘級

硬盤使用

一般爲MB

一般爲GB

性能

接近原生(宿主機)

弱於原生

系統支持量

單機支持上千個容器

一般幾十個

 

Docker中的三個重要概念

Docker中的三個重要概念分別是:Image(鏡像),Container(容器),Repository(倉儲)。

Image(鏡像)一個特殊的文件系統

你可以把它理解成一個虛擬機的快照(Snapshot),裏面包含了你要部署的應用程序以及它所關聯的所有庫。

  操作系統分爲內核和用戶空間。對於Linux而言,內核啓動後,會掛載root文件系統爲其提供用戶空間支持。而Docker鏡像(Image),就相當於是一個root文件系統。Docker鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。 鏡像不包含任何動態數據,其內容在構建之後也不會被改變。

 

Container(容器)鏡像運行時的實體

這裏的容器就像是一臺臺運行起來的虛擬機,裏面運行了你的應用程序,每個容器是獨立運行的他們相互之間不影響。通過一個鏡像,我們可以創建許多個不同的Container容器。

  鏡像(Image)和容器(Container)的關係,就像是面向對象程序設計中的類和類的實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啓動、停止、刪除、暫停等 。容器的實質是進程,但與直接在宿主執行的進程不同,容器進程運行於屬於自己的獨立的命名空間。前面講過鏡像使用的是分層存儲,容器也是如此。容器存儲層的生存週期和容器一樣,容器消亡時,容器存儲層也隨之消亡。因此,任何保存於容器存儲層的信息都會隨容器刪除而丟失。

 

Repository(倉儲)集中存放鏡像文件的地方

  鏡像構建完成後,可以很容易的在當前宿主上運行,但是, 如果需要在其它服務器上使用這個鏡像,我們就需要一個集中的存儲、分發鏡像的服務(就像Git倉庫一樣),Docker Registry就是這樣的服務。
  一個Docker Registry中可以包含多個倉庫(Repository),每個倉庫可以包含多個標籤(Tag),每個標籤對應一個鏡像。所以說:鏡像倉庫是Docker用來集中存放鏡像文件的地方類似於我們之前常用的代碼倉庫。通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標籤就常用於對應該軟件的各個版本 。我們可以通過<倉庫名>:<標籤>的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標籤,將以latest作爲默認標籤。

Docker 架構及工作原理

  Docker使用客戶端-服務器架構。Docker 客戶端與 Docker 守護進程通信,後者負責構建、運行和分發Docker容器等繁重的工作。Docker 客戶端和守護進程可以運行在同一個系統上,或者您可以將一個 Docker 客戶端連接到一個遠程 Docker 守護進程。Docker 客戶端和守護進程通過 UNIX 套接字或網絡接口使用 REST API 進行通信。

 

Dockerfile(自動化腳本)

主要是用來創建我們之間講到的鏡像,這個過程就好比我們在虛擬機中安裝操作系統和軟件一樣,只不過是通過Dockerfile這個自動化腳本完成的。

Dockerfile詳解教程文章:Dockerfile製作自己的鏡像文件👉

Docker管理工具

 

Portainer(推薦)

 

 

介紹:Portainer是一個開源的、輕量級的Docker環境管理UI(是Web應用的形式),可以用來管理Docker宿主機和docker swarm集羣。

Github 上項目地址:https://github.com/portainer/portainer

官網地址:https://www.portainer.io

支持的系統:Linux, Mac OS X, Windows。

功能特性:

  • 管理倉庫、網絡、數據卷、密鑰、鏡像、容器
  • 管理你的配置,例如告警、監控
  • 支持容器的健康檢查
  • 容器的啓動、停止、恢復、刪除
  • 檢查容器、查看容器日誌、可視化狀態查看
  • 進入容器控制檯
  • 可以添加擴展
  • 有一套 RBAC 基於角色的權限控制系統

DockStation

 

 

介紹:DockStation 是免費的,是桌面應用的形式。

官網地址:https://dockstation.io/

Github地址:https://github.com/DockStation/dockstation

支持的系統:Linux, Mac, Windows

功能特性:

  • 可以非常方便的操作 Docker 和 DockerCompose。
  • 可以幫助我們管理容器、Service服務(本地遠程都可以),並監控他們
  • 可以輕鬆跟蹤 CPU、內存、網絡、磁盤I/O、開放端口
  • 可以把常用的操作組織成一個項目,通過項目的方式來檢查容器狀態,以圖形化的方式管理。

Docker Desktop

 

 

介紹:Docker Desktop 是一款易於安裝的應用程序,使您能夠構建和共享容器化應用程序和微服務。

官網地址:https://www.docker.com/products/docker-desktop

支持的系統:Mac, Windows

功能特性:

  • 能夠以多種語言和框架在任何雲平臺上容器化和共享任何應用程序
  • 輕鬆安裝和設置完整的 Docker 開發環境
  • 包括最新版本的 Kubernetes
  • 自動更新,讓您保持最新狀態和安全
  • 在 Windows 上,能夠在 Linux 和 Windows Server 環境之間切換以構建應用程序
  • 使用本機 Windows Hyper-V 虛擬化實現快速可靠的性能
  • 能夠通過 Windows 機器上的 WSL 2 在 Linux 上本地工作
  • 代碼和數據的卷安裝,包括文件更改通知和輕鬆訪問本地主機網絡上運行的容器
  • 使用支持的 IDE 進行容器內開發和調試

參考文章:

 

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