iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
1
DevOps

現代化小白也要嘗試的容器手札系列 第 5

Day 5. Docker 燒腦專有名詞與應用場景

鬆獅容器小白5連拍

https://ithelp.ithome.com.tw/upload/images/20201005/20025481Gd8w0FlNfj.jpg

燒腦專有名詞

以下圖為範例帶出幾個常用專名:

  • Docker (客戶端C/S伺服器)架構模式,通過Socket或RESTful API來進行通訊,進而做為執行與返回Docker容器結果
  • Docker Client 客戶端:透過此用戶程式來連接本地或遠程的進程之用
  • Docker Daemon:守護進程,用戶端連接進程的過程
  • Docker Image:鏡像
  • Docker Container:容器
  • Docker Registry:倉庫
    https://ithelp.ithome.com.tw/upload/images/20200912/20025481tVVAhu0qah.png
    基本名詞:
  1. Docker Images:用於創建 Docker 容器的模板。
  2. Docker Container:獨立運行的一個或一組應用。
  3. Docker Client:客戶端通過命令行或者其他工具使用 Docker API
  4. Docker Daemon 守護進程:用戶端連接進程的過程,舉凡透過執行Docker Image、啟動容器或停止容器服務並提供Restful API給管理者操作或顯示Docker容器等狀態訊息系列操作動作並返回結果。而在Docker 1.11之後Docker Daemon又拆解更多更細的元件服務如:containerd、docker-containerd-shim、docker-runc等,有興趣的可以透過自行深入研究。
  5. Docker Host:底層可能是實體或虛擬機用於執行 Docker 守護進程和容器之用。
  6. Docker Registry:用來儲存映像檔,可以想像是一個個各自獨立封裝代碼的倉庫。
  7. Docker Hub:提供一世界公開分享取用的映像檔集區,當然依據會員帳戶權限的不同而有了專屬的私有倉庫之用。
  8. Docker Machine:透過簡單的指令行即可在相應平台上安裝Docker 執行環境如:Linux 、MacOS 或Windows
    進階核心名詞:
  9. Namespaces命名空間:
    透過此技術來達到執行環境隔離,舉例像是程序上一定都有Process ID、User ID等環境執行狀態都做隔離,這樣就可以達到同一台宿主機器上。
    假設有兩組Namespace分別是NSP-A和NAP-B 而裡面同時起了一樣的網站服務,在NSP-A內有個PID程序是01,NAP-B內同時有一樣的PID程序也叫01,進而達到執行環境上PID的隔離。
    https://ithelp.ithome.com.tw/upload/images/20200912/20025481ay7OMMvG8Q.png
    更進一步的命名空間隔離的類型如下參閱:
    https://ithelp.ithome.com.tw/upload/images/20200912/200254816LW2yqyMMI.png
  10. Control Group
    簡稱C-Group作為系統資源的管理分配如:CPU、Memory或Disk I/O…等資源做有效的資源限制.
    3另外也透過(copy-on-write)機制實現用多少佔多少無需預劃更高效的資源空間利用操作,舉例:Disk定義上分配100 GB空間,但實際上並沒有佔用真正100GB而只吃了10GB,那真實使用就是10GB)
  • 資源限制:可對任務資源總額進行限制。
  • 優先序分配:透過實際CPU,Disk I/O或網路頻寬大小等任務來作優先分配。
  • 資源統計:可統計系統資源用量如:CPU使用時間長度,Memory 用量等..
  • 任務控制:可對任務執行載入、回復控制操作行為。

Docker 目前常見的適合應用場景

應用概述說明

  1. 公有雲 IaaS 平台資源利用
    前述已經知道相較 VM 而言,這輕量的容器虛擬技術,從啟動、部署、升級與管理調用速度效率更高,除了沒有圖形化外,使用其實跟VM 的核心應用上並不大,故可以透過公有雲本身的特性優勢可能使用Ubuntu 等作業系統映像檔來創建容器,作為輕量 VM 使用更多的監視或測試服務之用。

  2. 應用服務使用
    Docker 容器核心價值在於提供一套平台低耦合的標準化技術,把服務佈建、升級、更新等你所想到的動作,只需把各種服務定義並打包成標準貨櫃,就可以在任意能在有 Docker 的環境下運行,故如何能夠將您的商業服務流程透過程式碼表現並轉換成容器化而變成一個個已經定義關聯執行取用的服務即可,現代化程式也已經跟上CI/CD的浪潮,故也支援各公有雲PaaS模式的快速佈建或持續整合與持續部署,目前大多仍以網站呈現為多。

  3. 微服務的實踐
    微服務架構將傳統單體式的應用系統服務拆分解耦合,進而形成一個個更為獨立極小的服務,服務與服務之間完全獨立,無論是因為效能需要提升,Debug,或運帷升級更新等需求都搭載應用在容器本身。

簡易場景範例以及企業典範
飛機小遊戲的實踐範例:
https://ithelp.ithome.com.tw/upload/images/20200912/20025481PeE0tqKxIA.png

搭建飛機大戰小遊戲
雷亞遊戲借助Kubernetes,3人搞定百萬玩家App底層維運
https://ithelp.ithome.com.tw/upload/images/20200912/20025481ukQiKdcSj0.png

大規模容器叢集實例
91APP 新零售新興系統要先容器化,再靠K8s實現IT微服務架構
https://ithelp.ithome.com.tw/upload/images/20200912/20025481FEPzqg6Sxv.png
91APP K8s新零售平台


上一篇
Day 4. Docker 與 K8s 具體化口碑優勢,不知道也要背起來
下一篇
Day 6. Docker 架構流程說明
系列文
現代化小白也要嘗試的容器手札30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言