天天看點

全面的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快速入門教程

為了模拟完全相同的本地開發環境。

我們首先想到的就是虛拟機,但是虛拟機需要模拟硬體,運作整個作業系統不但體積臃腫記憶體占用高,程式的性能也會受到影響。

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

全面的Docker快速入門教程

Docker的脫穎而出:

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

全面的Docker快速入門教程

Docker和虛拟機技術的差別?

  Docker 在容器的基礎上,進行了進一步的封裝,從檔案系統、網絡互聯到程序隔離等等,極大的簡化了容器的建立和維護。使得

Docker

技術比虛拟機技術更為輕便、快捷。

下面的圖檔比較了 Docker 和傳統虛拟化方式的不同之處。傳統虛拟機技術是虛拟出一套硬體後,在其上運作一個完整作業系統,在該系統上再運作所需應用程序;而容器内的應用程序直接運作于宿主的核心,容器内沒有自己的核心,而且也沒有進行硬體虛拟。是以容器要比傳統虛拟機更為輕便。

全面的Docker快速入門教程
全面的Docker快速入門教程

如果想詳細了解,可以參考文章:docker與虛拟機的差別👉

Docker容器和虛拟機的差別總結:

特性 docker容器 虛拟機
啟動 秒級 分鐘級
硬碟使用 一般為MB 一般為GB
性能 接近原生(主控端) 弱于原生
系統支援量 單機支援上千個容器 一般幾十個

Docker中的三個重要概念

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

Image(鏡像)一個特殊的檔案系統

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

  作業系統分為核心和使用者空間。對于Linux而言,核心啟動後,會挂載root檔案系統為其提供使用者空間支援。而Docker鏡像(Image),就相當于是一個root檔案系統。Docker鏡像是一個特殊的檔案系統,除了提供容器運作時所需的程式、庫、資源、配置等檔案外,還包含了一些為運作時準備的一些配置參數(如匿名卷、環境變量、使用者等)。 鏡像不包含任何動态資料,其内容在建構之後也不會被改變。

全面的Docker快速入門教程

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

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

  鏡像(Image)和容器(Container)的關系,就像是面向對象程式設計中的類和類的執行個體一樣,鏡像是靜态的定義,容器是鏡像運作時的實體。容器可以被建立、啟動、停止、删除、暫停等 。容器的實質是程序,但與直接在宿主執行的程序不同,容器程序運作于屬于自己的獨立的命名空間。前面講過鏡像使用的是分層存儲,容器也是如此。容器存儲層的生存周期和容器一樣,容器消亡時,容器存儲層也随之消亡。是以,任何儲存于容器存儲層的資訊都會随容器删除而丢失。

全面的Docker快速入門教程

Repository(倉儲)集中存放鏡像檔案的地方

  鏡像建構完成後,可以很容易的在目前宿主上運作,但是, 如果需要在其它伺服器上使用這個鏡像,我們就需要一個集中的存儲、分發鏡像的服務(就像Git倉庫一樣),Docker Registry就是這樣的服務。

  一個Docker Registry中可以包含多個倉庫(Repository),每個倉庫可以包含多個标簽(Tag),每個标簽對應一個鏡像。是以說:鏡像倉庫是Docker用來集中存放鏡像檔案的地方類似于我們之前常用的代碼倉庫。通常,一個倉庫會包含同一個軟體不同版本的鏡像,而标簽就常用于對應該軟體的各個版本 。我們可以通過<倉庫名>:<标簽>的格式來指定具體是這個軟體哪個版本的鏡像。如果不給出标簽,将以latest作為預設标簽。

Docker 架構及工作原理

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

Docker 架構及工作原理詳情介紹👉

全面的Docker快速入門教程

Dockerfile(自動化腳本)

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

Dockerfile詳解教程文章:Dockerfile制作自己的鏡像檔案👉

Docker管理工具

全面的Docker快速入門教程

Portainer(推薦)

全面的Docker快速入門教程

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

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

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

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

功能特性:

  • 管理倉庫、網絡、資料卷、密鑰、鏡像、容器
  • 管理你的配置,例如告警、監控
  • 支援容器的健康檢查
  • 容器的啟動、停止、恢複、删除
  • 檢查容器、檢視容器日志、可視化狀态檢視
  • 進入容器控制台
  • 可以添加擴充
  • 有一套 RBAC 基于角色的權限控制系統

DockStation

全面的Docker快速入門教程

介紹:DockStation是一個免費的、以開發人員為中心的用于管理基于 Docker的桌面應用程式。您可以僅使用 GUI 來監控、配置和管理服務和容器,而不是大量的 CLI 指令。

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

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

支援的系統:Linux, Mac, Windows

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

Docker Desktop

全面的Docker快速入門教程

介紹: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 進行容器内開發和調試

Docker學習系列文章

入門必備:十本你不容錯過的Docker入門到精通書籍推薦👉

day1、全面的Docker快速入門教程👉

day2、CentOS 8.4安裝Docker👉

day3、Windows10 Docker安裝詳細教程👉

參考文章:

官方Docker-docs

Docker 10分鐘快速入門-B站視訊

作者:追逐時光者

作者簡介:一個熱愛程式設計,善于分享,喜歡學習、探索、嘗試新事物,新技術的程式猿。

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果該篇文章對您有幫助的話,可以點一下右下角的【♥推薦♥】,希望能夠持續的為大家帶來好的技術文章,文中可能存在描述不正确或錯誤的地方,歡迎指正、補充,不勝感激 !