1. 程式人生 > >(一)Docker 的直觀瞭解和架構

(一)Docker 的直觀瞭解和架構

Docker 能做什麼?

Docker 是容器,這個容器很強大,可以作為作業系統來使用,比如在裡面部署jdk,tomcat,nginx等。這些安裝在 Docker 裡的軟體有一個統一的名稱——Docker 容器,他們來自於 Docker 映象。但是需要強調的是,對比虛擬機器而言,Docker 容器本身是獨立的,比如你有一個 tomcat 的容器,其本身就已經包含了 jdk 的部署,即容器本身就是一個可以執行的“完整系統“,但是容器的體積小,啟動速度都是秒級別的。

直觀的來說,我們需要明白幾個概念。

  • Docker 引擎 管理 Docker 的地方,比如 Docker 映象、容器和其他配置檔案。
  • Docker 客戶端是我們操作 Docker 命令的地方。
  • Docker Images Docker 映象 是作業系統中各種軟體的”安裝包”,比如 nginx、mysql、tomcat,注意是安裝包 ,但是這個安裝包內容不一定是初始化的,如果你有安裝過作業系統的經歷就很容易理解這一點,比如純淨版作業系統映象,安裝好了各種軟體的作業系統映象。是的,Docker 映象是可以自定義的。
  • Docker Registry 是儲存 Docker 映象的地方,這個位置預設是 Docker Hub ,即官方的,你也可以自己建一個,可以聯想一個git hub和開源中國。
  • Docker Container Docker 容器是安裝好配置好的軟體,即 映象可以被用來產生具體的容器,比如一個 nginx 映象可以用來生成一個 容器,你可以配置埠號等等。當然,這個映象可以用於產生多個容器。
  • Docker daemon Docker 引擎用於處理整個 Docker 業務的一個後臺駐留程式 。

Docker 的架構

Docker 官方文件架構圖
Docker 官方文件架構圖

  • Docker daemon ( Docker 守護程序 )
    Docker daemon 是一個執行在宿主主機(DOCKER_HOST)的後臺程序。可通過客戶端與之通訊。
  • Client ( Docker 客戶端 )
    Docker 客戶端是 Docker 的使用者介面,它可以接受使用者命令和配置標識,並與 Docker daemon 通訊。
  • Images (Docker 映象)
    Docker 映象是一個只讀模板,它包含建立 Docker 容器的說明。
  • Container ( 容器 )
    容器是映象的可執行例項。映象合併容器的關係有點類似於面向物件中,類和物件的關係。可通過 Docker API 或者 CLI 命令來啟動、移動、刪除容器。
    • Registry
      Docker Registry 是一個集中儲存與分發映象的服務。構建完 Docker 映象後,就可以在當前宿主機上執行。但是如果想在其他機器上執行這個映象,就要手動複製。而 Docker Registry 可以用於替代手動替換。
      一個 Docker Registry 可包含多個 Docker 倉庫,每個倉庫可包含多個映象標籤,每個標籤對應一個Docker 映象。
      Docker Registry 可分為公有 Docker Registry 和私有 Docker Registry。最常用的 Docker Registry 莫過於官方的 Docker Hub,這也是預設的 Docker Registry。