盤Docker嗎?Docker必備基礎理論導讀!

前言

  • Docker自2013年爆紅以來,一直獨領風騷,以下是我整理的一些Docker基礎理論,個人感覺這些是以後玩Docker,K8S等的敲門磚,很基礎,很重要!

一:DOCKER理論

1.1:什麼是docker?有什麼作用?

  • mark
  • Docker是一個用於開發,交付和運行應用程序的開放平臺。Docker使您能夠將應用程序與基礎架構分開,從而可以快速交付軟件。
  • 是一個開源的應用容器引擎,讓開發者可以打包大門的應用以及依賴包到一個可移植的鏡像中,然後發佈到任何流行的Linux或者Windows機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口
  • 沙箱(Sandbox):在計算機安全領域,沙箱是一種程序的隔離運行機制
  • Docker在2013年一炮而紅,直到現在,已經成爲容器技術的代名詞。
  • Docker從一開始就以提供標準化的運行時環境爲目標,真正做到“build once, run anywhere”,可以將同一個構建版本用於開發、測試、預發佈、生產等任何環境,並且做到了與底層操作系統的解耦。在此基礎上還進一步發展出了CaaS(容器即服務)技術。

1.2:Docker的使用場景

  • 打包應用程序簡單部署
  • 可脫離底層硬件任意遷移(實現了應用的隔離,將應用拆分並進行解耦),例如:服務器從騰訊雲遷移到阿里雲
  • 持續集成和持續交付(CI/CD):開發到測試發佈
  • 部署微服務
  • 提供PAAS產品(平臺即服務){OpenStack的雲主機類似於阿里雲的ECS,屬於IAAS、Docker(K8S) 屬於PAAS}

1.3:Docker引擎(Docker Engine)

  • Docker Engine是具有以下主要組件的客戶端-服務器應用程序:
  • 服務器是一種長期運行的程序,稱爲守護程序進程( dockerd命令)。
  • REST API,它指定程序可以用來與守護程序進行通信並指示其操作的接口。
  • 命令行界面(CLI)客戶端(docker命令)。
  • mark

1.4:Docker的架構(Docker architecture)

  • Docker使用客戶端-服務器架構。Docker 客戶端與Docker 守護進程進行對話,該守護進程完成了構建,運行和分發Docker容器的繁重工作。

  • Docker區別於傳統的虛擬化,不需要虛擬硬件資源,直接使用容器引擎,所以速度快

  • Docker Client:客戶端

    • Docker客戶端(docker)是許多Docker用戶與Docker交互的主要方式。當您使用諸如之類的命令時docker run,客戶端會將這些命令發送到dockerd,以執行這些命令。該docker命令使用Docker API。Docker客戶端可以與多個守護程序通信。
  • Docker daemon:守護進程

    • Docker守護程序(dockerd)偵聽Docker API請求並管理Docker對象,例如圖像,容器,網絡和卷。守護程序還可以與其他守護程序通信以管理Docker服務。
  • Docker images:鏡像

    • 容器可以被打包成鏡像
  • Docker container:容器

  • Docker registry:鏡像倉庫

    • 存儲鏡像的地方,默認在公共的Docker Hub上查找,可以搞個人倉庫。

mark

1.5:容器與虛擬機的區別

  • mark

  • 不同點 container VM
    啓動速度 秒級 分鐘級
    運行性能 接近原生(直接在內核中運行) 5%左右損失
    磁盤佔用 MB GB
    數量 成百上千 一般幾十臺
    隔離性 進程級別 系統級別(更徹底)
    操作系統 主要支持Linux 幾乎所有
    封裝程度 只打包項目代碼和依賴關係,共享宿主機內核 完整的操作系統,與宿主機隔離

1.7:名稱空間(Namespaces)

  • Docker使用一種稱爲namespaces提供容器的隔離工作區的技術。運行容器時,Docker會爲該容器創建一組 名稱空間
  • 這些名稱空間提供了一層隔離。容器的每個方面都在單獨的名稱空間中運行,並且其訪問僅限於該名稱空間。
  • Docker Engine在Linux上使用以下名稱空間:
    • **該pid命名空間:**進程隔離(PID:進程ID)。
    • **該net命名空間:**管理網絡接口(NET:網絡)。
    • **該ipc命名空間:**管理訪問IPC資源(IPC:進程間通信)。
    • **該mnt命名空間:**管理文件系統掛載點(MNT:mount)。
    • **該uts命名空間:**隔離內核和版本標識符。(UTS:Unix時間共享系統)。

1.8:控制組(Control groups)

  • Linux上的Docker引擎還依賴於另一種稱爲控制組cgroups)的技術。cgroup將應用程序限制爲一組特定的資源。控制組允許Docker Engine將可用的硬件資源共享給容器,並有選擇地實施限制和約束。例如,您可以限制特定容器可用的內存。

1.9:博客結束,謝謝觀賞!如有疑問可以私信或者評論區交流!

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