Docker簡單介紹筆記

2021-10-04 20:50:29 字數 1886 閱讀 7992

貨櫃化的優點:

靈活:即使是複雜的應用程式也可封裝。

輕量級:容器利用並共享主機核心。

可攜式:您可以在本地構建,部署到雲上並在任何地方執行。

可擴充套件性:您可以增加和自動分發容器副本。

可堆疊:您可以垂直堆疊服務並及時並及時堆疊服務。

docker 使用客戶端-伺服器 (c/s) 架構模式,使用遠端api來管理和建立docker容器。docker 容器通過 docker 映象來建立。容器與映象的關係類似於物件導向程式設計中的物件與類。

docker

物件導向

容器物件映象類

docker採用 c/s架構 docker daemon 作為服務端接受來自客戶的請求,並處理這些請求(建立、執行、分發容器)。 客戶端和服務端既可以執行在乙個機器上,也可通過 socket 或者restful api 來進行通訊。

docker daemon 一般在宿主主機後台執行,等待接收來自客戶端的訊息。 docker 客戶端則為使用者提供一系列可執行命令,使用者用這些命令實現跟 docker daemon 互動。

docker的主要用途,目前又三大類:

提供了一次性的環境:比如,本地測試他人的軟體、持續整合的時候提供單元測試和構建的環境。

提供彈性的雲服務:因為docker容器可以隨開隨關,很適合動態擴容和所容。

組建微服務架構:通過多個容器,一台機器可以跑多個服務,因此在本機就可以模擬出微服務架構。

映象:

作業系統分為核心和使用者空間,對於linux而言,核心啟動後,會掛載root檔案系統為其提供使用者空間支援。而docker映象(image),就相當於是乙個root檔案系統。

docker映象是乙個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(如匿名卷、環境變數、使用者等)。映象不包含任何動態資料,其內容在構建之後也不會被改變。

分層儲存:

因為映象包含系統完整的root檔案系統,其體積往往是龐大的,因此在docker設計時,就充分利用union fs技術,將其設計為分層儲存的架構。所以嚴格來說,映象並非是像乙個iso那樣的打包檔案,映象只是乙個虛擬的概念,其實際體現並非由乙個檔案組成,而是由一組檔案系統組成,或者說,由多層系統聯合組成。

映象構建時會一層層構建,前一層是後一層的基礎。每一層構建完就不會再發生改變,後一層上的任何改變只發生在自己這一層,比如,刪除前一層檔案的操作,實際不是真的刪除前一層的檔案,而是僅在當前層標記為該檔案已刪除。在最終容器執行的時候,雖然不會看到這個檔案,但是實際上該檔案會一直跟隨映象。因此,在構建映象的時候,需要額外小心,每一層盡量只包含該層需要新增的東西,任何額外的東西應該在該層構建結束前清理掉。

分層儲存的特徵還使得映象的復用、定製變的更為容易。甚至可以用之前構建好的映象作為基礎層,然後進一步新增新的層,以定製自己所需要的內容,構建新的映象。

docker容器:

因為映象包含系統完整的root檔案系統,其體積往往是龐大的,因此在docker設計時,就充分利用union fs技術,將其設計為分層儲存的架構。所以嚴格來說,映象並非是像乙個iso那樣的打包檔案,映象只是乙個虛擬的概念,其實際體現並非由乙個檔案組成,而是由一組檔案系統組成,或者說,由多層系統聯合組成。

映象構建時會一層層構建,前一層是後一層的基礎。每一層構建完就不會再發生改變,後一層上的任何改變只發生在自己這一層,比如,刪除前一層檔案的操作,實際不是真的刪除前一層的檔案,而是僅在當前層標記為該檔案已刪除。在最終容器執行的時候,雖然不會看到這個檔案,但是實際上該檔案會一直跟隨映象。因此,在構建映象的時候,需要額外小心,每一層盡量只包含該層需要新增的東西,任何額外的東西應該在該層構建結束前清理掉。

分層儲存的特徵還使得映象的復用、定製變的更為容易。甚至可以用之前構建好的映象作為基礎層,然後進一步新增新的層,以定製自己所需要的內容,構建新的映象。

Docker 學習筆記 簡單介紹

學習docker已經有一段時間了,一直沒有靜下心來好好總結一下。感覺是時候寫點東西和大家一起分享了,如果寫的不好還請幫忙指正。先從docker的一些官方 說起。1.www.docker.com 這個是docker的官網,經常參考的是install docs,學會這裡面的所有內容你就是docker使用...

Docker 簡單介紹

接觸docker是因為團隊很多程序在主機執行,download別人的code會出現很多問題,需要安裝新的外掛程式,設定環境變數等。process contaiter vm process1 process2 process1 process2 process1 process2 liblib1 li...

docker簡單介紹七 docker 相關工具

docker 是乙個開源的應用容器引擎,基於 go 語言 並遵從 apache2.0 協議開源。docker 可以讓開發者打包他們的應用以及依賴包到乙個輕量級 可移植的容器中,然後發布到任何流行的 linux 機器上。容器是完全使用沙箱機制,相互之間不會有任何介面,更重要的是容器效能開銷極低。doc...