2023 iT邦鐵人賽 Day 28 - 容器管理

前言

鐵人賽即將進入尾聲,我們目前已經掌握了 Docker 的各種知識與技術,現在已經知道能夠一口氣建立出多個彼此聯繫、互相合作的容器們,形成一個完整的系統。

接下來到最後,我們要來介紹什麼是容器管理。只要使用 Docker,就算不會用到容器管理,也至少要知道有這樣的東西存在。

為何需要容器管理

到目前為止,我們已經知道,可以透過容器幫我們裝載應用程式,並在運行容器後,讓應用程式提供它本身被設計出來的服務。只要容器或應用程式本身沒有出現問題,就會一直持續的運作下去,服務也會持續提供給使用者們使用。

但真的有那麼順利嗎?容器都不會壞?

如果容器壞了,服務就停止了,使用者就無法正常使用服務,公司就造成損失,那該怎麼辦? 重新啟動一個新的容器就好。

但總不可能時時刻刻盯著容器的狀態是否正常,秒發現,秒下指令重啟新容器吧? 這太逼人了! 如果我們可以讓容器在出現問題導致無法正常運作時,自行刪除,重新建立新容器,並自動運作,那該有多好。

容器管理概念

那到底什麼是容器管理呢?經過上述的情境,我們可以略知一二,容器管理會自動幫我們在容器壞掉時,馬上再運行一個新的容器,讓服務無縫接軌,順利銜接上。

舉例來說,Rails 系統的容器會有 Rails、資料庫、redis、sidekiq 四個容器。當資料庫的容器發生問題時,容器管理系統能幫我們刪掉有問題的資料庫容器,並重新建立與運行一個新的資料庫容器,讓容器們維持在一個理想的狀態

所以,容器管理的重點是維持。他只要一發現容器的狀態、數量跟設定不一致時,就會趕快把容器們的現況變成設定的樣子。

容器管理運作機制

上面提到「維持設定」,代表要先有設定,才有能有維持。沒錯,在容器管理系統中,我們可以設定要有什麼容器,數量多少,彼此的相依性等等。

有了這些設定,容器管理系統便會依照這個設定去監控容器,並維持理想的狀態。

我們會在後面的兩天再詳細介紹。

容器管理系統有哪些

現在最廣為人知的容器管理系統,非 K8S 莫屬,其全名為 Kubernetes。再來還有 Docker Swarm。其實應該是 Docker Swarm 先,再來才是 K8S,但現在的 K8S 知名度似乎比 Docker Swarm 還高!?

不管怎樣,這兩款都是非常有名的容器管理系統,而且也常常會把他們擺在一起比較。

總結

今天稍微讓大家對容器管理有個簡單的認識,知道容器管理是讓容器能夠維持在理想的狀態。那什麼是理想的狀態?就是設定裡的內容。維持設定裡所寫的內容,就是維持理想的狀態。