開發者學堂課程【現代應用容器技術快速入門第二課時:容器技術基礎(2)】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/830/detail/13951容器技術基礎(2)
本節内容
1. Dockor 系統元件
2. Docker 鏡像
3. Docker 容器
4. Docker Registry
5. Docker 容器的狀态資料存儲
6. 存儲卷
7. 将容器接入網絡
8. Docker 網絡
1.Dockor 系統元件
• Docker 系統有三個關鍵元件.
– pocker cLl
– Docker Daemon
– Registry
• Docker Daemon
– REST API
– Objects
• lmage
• Container
• Volume
• Network
2.Docker 鏡像
• 運作容器時,基于Mount 名稱空間建立的隔離檔案系統中的内容來自鏡像
– Docker 鏡像是一個特殊的檔案系統,它必須包含運作應用程式所需的一切——所有依賴項、配置、腳本、二進制檔案等
– 鏡像還包含容器的其他配置,例如環境變量、要運作的預設指令、和其他中繼資料
– 通常,鏡像還要定義預設啟動的應用
• Docker 鏡像由許多層( Layer)疊加而成
– 依賴于特殊的存儲驅動,例如aufs、devicemapper.overlay2等
– 盡管每種存儲驅動程式實作的管理方式不盡相同,但它們都使用可堆疊的鏡像層和寫時複制( CoW)政策
3.Docker 容器
• 運作有Docker Daemon 的主機負責管理本地容器執行個體的生命周期
– Docker Daemon 通過其監聽的Socket API 接收Docker 對象的管理請求,包括容器的生命周期中的各類管理操作
– 容器執行個體的建立要基于本地存儲的Docker鏡像進行
– 執行個體啟動後,要在前台( foreground,不能轉為守護程序模式)運作鏡像中定義的預設應用,或使用者指定的應用
• 建立容器時,指定了本地不存在的鏡像時,則需要由Docker Daemon 自動至Registry 上進行下載下傳
– Docker Daemon 預設使用的Registry是DockerHub
4.Docker Registry
• The Registry is a stateless, highly scalable server side application that stores and lets you
distribute Docker images.
• Registry 上的鏡像存儲于“倉庫(Repository)”中,倉庫可隸屬于根名稱空間或特定的名稱空間
– 每個鏡像由“倉庫名:标簽名”辨別
– 也可由鏡像的Hash碼辨別
5.Docker 容器的狀态資料存儲
• 對于容器執行個體來說,底層的Docker 鏡像處于隻讀狀态,程序的讀寫操作隻能在建立容器時生成的疊加于鏡像棧最上層的可寫層中進行,該層也稱為容器層
• 根據同一鏡像,Docker 能夠建立出運作環境完全一緻的容器,在容器中添加新資料或修改現有資料的結果,都存儲在由容器附加在鏡像棧頂的可寫層中
• 删除容器,将一同删除其可寫層,這将導緻容器生成的狀态資料全部丢失
6.存儲卷
• 存儲卷
– 支援使用存儲卷(Volume)技術來繞過存儲驅動程式,将資料存儲在主控端可達的存儲空間上,以實作跨容器生命周期的資料持久性
– 也支援使用卷驅動器(Docker引擎上的存儲卷插件)将資料直接存儲于遠端儲存設備上,以實作跨主機生命周期的資料持久性
7.将容器接入網絡
• 将容器接入網絡通常要經由這樣幾個步驟
1.好相應的容器網絡,通常是虛拟網絡;
– 單機的橋接式網絡
– 跨主機的Overlay 或Underlay 網絡2.為每個容器配置一個獨占的Network 名稱空間;
3.為容器添加專用的接口裝置,并将其接入到容器網絡中;
4.為容器接配置設定相應的IP位址及其它網絡屬性值,并按需生成NAT 規則;
8.Docker 網絡
• Docker 預設支援4種網絡模式
– host 模式
– container 模式
– none 模式
– bridge 模式