剛開始接觸雲原生(Cloud Native)領域時常常會對一些名詞感到困惑,像是docker、docker-compose、Kubernetes的差別,於是在進入下個階段前想先跟大家分享它們之間的差別。
docker
docker是一個開源的容器化平台,它能將應用程式及其所有依賴打包到一個可移植的容器中,使應用程式能夠在不同的環境中一致地運行。主要應用為單個的服務,除了docker外,containerd也是容器化的工具之一,它輕量化及簡單輕鬆的設計使其更靈活和可擴展性(scalable)更高。較新的Kubernetes也開始使用containerd作為控管容器(container)的工具。
docker-compose
docker-compose 是 Docker 生態中的一個工具,專門用來定義和運行多容器的 docker 應用程式,較適合用於測試及開發環境。使用YAML文件(docker-compose.yml)來描述應用程式的服務(service)、網路配置(network)和卷存儲(volume),可以輕鬆的一次啟動、管理多個相互依賴的容器。不過其實docker-compose裡也能只放一個容器,對單個容器進行管理,如想要設定單個容器fail後會自動重啟,可以在docker-compose.yml裡設定容器啟動規則為always restart,算是不擅長寫crontab腳本的人的好幫手XD
Kubernetes
Kubernetes(K8s)是一個開源的容器管理平台,用來自動化部署、管理和擴展容器化應用,較適合用於正式環境。Kubernetes比docker-Compose 更加強大,能夠在分布式系統中協調大量容器,實現高可用性、滾動更新、自我修復等特性。K8s是滿好用的容器管理系統,除了基礎功能外,開源社群上還有非常多的高手以及許多好用的插件,除此之外還非常適合微服務架構,是管理許多微服務的好用工具。
前面文章有提到使用docker-compose建立測試環境及將開發好的服務打包成docker,接下來開始會介紹如何將服務部署於K8s環境,及相關的雲原生應用,對我來說算是數位醫療與雲原生第一次的親密接觸XD