科技與技術系列 - 2: 容器技術與工具

更新於 發佈於 閱讀時間約 6 分鐘

相信對於許多人來說,開始使用容器往往是在進入職場之後的事。即便如此,許多工程師也只是跟著前輩的步伐,執行指令來建立容器,隨後便直接投入需求修改、程式碼調整等工作。至於「如何建立容器」或是「如何搭建本地環境」,大多數人可能並未深入了解。

事實上,對於初階工程師來說,這些細節的確並不那麼重要。畢竟大多數時候,初階工程師的角色集中在調整、維護現有功能,偶爾負責新增一些小功能。然而,隨著職位的升遷,高階工程師便需要負責系統升級、構建新系統、或進行系統重構等更大範圍的工作。此時,對容器的深刻理解便顯得至關重要,因為它是確保這些工作順利進行的基礎。

簡介容器

什麼是容器

容器是一種輕量級的軟體包,它包含了應用程式及其所有必要的依賴項,讓我們可以在任何環境中執行容器內的內容。簡單來說,容器可視為一個封閉的運行環境。

此外,容器還具有隔離性。正如之前所提到的,容器內的內容可以在任何環境中執行,因此它與所在的環境無關,彼此完全隔離。這種隔離性保證了我們在不同環境中運行容器時,能夠得到一致的結果,也不會因為運行容器導致原有的環境受到汙染。

容器的組成

容器主要由以下三個部分所組成:

  • 鏡像(Image):鏡像是容器的靜態文件,包含了應用程式的所有代碼、環境變數、配置文件等內容。鏡像是唯讀的(readonly),並可以基於相同的鏡像創建多個容器實例。一般來說,鏡像會基於某些操作系統(如Ubuntu、Alpine等)或平台(如PHP、Python等)。
  • 容器(Container):容器是由鏡像創建的運行實體,擁有一個唯一的容器ID。容器可以啟動、停止、移動或刪除,並且它是鏡像在運行時的具體表現。
  • 容器引擎:容器引擎是管理和執行容器所必須的軟體,例如 Docker,它負責容器的創建、運行和管理。

容器的優點

  1. 快速啟動:由於容器輕便且僅包含運行所需的基本內容,因此啟動速度比需要啟動整個操作系統的虛擬機要快許多。
  2. 一致性和可靠性:容器具有強隔離性,並且使用相同的鏡像創建容器。這樣不僅保證了開發、測試及生產環境的一致性,還能有效避免「明明在我機器上能運行」的問題。
  3. 高效的資源利用:容器不需要額外的操作系統,減少了硬體資源的浪費、提高資源利用率。

與容器相關的平台與技術

Docker

Docker 是提供實現容器技術的一種工具,使得開發者能夠更輕鬆地創建、管理和運行容器化應用。Docker 本身有一套工具集來支援容器化過程,並簡化了容器的建立、運行和部署。由於 Docker 擁有強大的社群和豐富的生態系統,因此大多數人也都更傾向使用 Docker 與其規範去建立容器。

K8S

Kubernetes(縮寫為 K8s)是一個開源的容器編排平台,用於自動化應用容器的部署、擴展和管理。Kubernetes 的主要特性和概念包含:

  1. 容器編排:Kubernetes 能夠自動處理容器的部署和調度,確保容器在集群中的分佈符合用戶需求,並能有效管理容器的生命周期。
  2. 服務發現和負載均衡:Kubernetes 透過 DNS 名稱或 IP 地址來暴露容器服務,並提供負載均衡功能,確保流量能夠均勻分佈,以提高系統的可用性與穩定性。
  3. 儲存編排:Kubernetes 支援自動掛載各種儲存系統,無論是本地儲存、雲端儲存(如 GCP、AWS)或是網路儲存系統(如 NFS、iSCSI、Gluster、Ceph、Cinder 等)。
  4. 自動擴展:根據 CPU 使用率或其他應用提供的指標,Kubernetes 可以自動擴展應用的資源,實現高效的資源利用與調度。
  5. 自我修復:Kubernetes 具有自我修復能力,當容器或節點出現故障時,它能夠自動重新啟動失敗的容器,並將其調度到健康的節點上。
  6. 秘密和配置管理:Kubernetes 可以儲存並管理敏感資料,如密碼、OAuth 令牌和 SSH 金鑰等,並能在不重建容器映像的情況下更新應用配置與密鑰。

簡而言之,Kubernetes 提供了一個強大且自動化的管理平台,用來協調和管理大量容器,從而簡化了容器化應用的部署與運營。

ArgoCD

ArgoCD 是一款開源的持續交付 (Continuous Delivery, CD) 工具,專門設計來簡化和自動化 Kubernetes 上的應用程式部署與管理。它是一個基於 GitOps 的解決方案,這意味著它將 Git 作為「單一真實來源」(Single Source of Truth),並通過自動化部署流程來確保 Kubernetes 叢集中的應用狀態與 Git 儲存庫中的配置保持一致。

此外,ArgoCD 能夠追蹤容器應用目前的狀態,確保與 Git 儲存庫中的配置一致。如果某個容器應用的配置被更改或者出現問題,ArgoCD 會自動回滾到先前的穩定版本,從而確保容器應用始終處於健康狀態。

簡單來說,ArgoCD 就是以 GItOps 與 Kubernetes 這兩點為主要特色的工具。

AWS CodeDeploy

AWS CodeDeploy 是一個全託管的部署服務,可用於將應用程式部署到各種環境中,包括容器化應用,如 Amazon ECS 或 Amazon EKS。它還提供容器版本控制,方便執行滾動更新(Rolling Updates)與回滾(Rollback),使應用程式的部署與維護變得更加高效與可靠。

簡而言之,AWS CodeDeploy 提供了一個自動化部署容器的平台,簡化了應用程式的版本管理與更新過程。

參考資料

  1. http://docs.kubernetes.org.cn/227.html
  2. Cron — K8S的排程工具
  3. kubernetes的三种探针
  4. https://medium.com/inside-personio/graceful-shutdown-of-fpm-and-nginx-in-kubernetes-f362369dff22
  5. https://ithelp.ithome.com.tw/articles/10248217
留言
avatar-img
留言分享你的想法!
avatar-img
林柏宇的沙龍
2會員
48內容數
test
林柏宇的沙龍的其他內容
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/13
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。
Thumbnail
2025/04/13
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。
Thumbnail
2025/04/06
本篇文章簡要介紹自動化測試的基本概念及相關的測試套件,並探討了在CI/CD流程中整合自動化測試的重要性,及如何使用Faker和Mockery來生成測試資料和模擬物件。最後,分享了自動化測試在後端開發中的必要性與實踐建議,旨在提升程式碼品質及降低維護成本。
Thumbnail
2025/04/06
本篇文章簡要介紹自動化測試的基本概念及相關的測試套件,並探討了在CI/CD流程中整合自動化測試的重要性,及如何使用Faker和Mockery來生成測試資料和模擬物件。最後,分享了自動化測試在後端開發中的必要性與實踐建議,旨在提升程式碼品質及降低維護成本。
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
Docker是由GO語言實現,是一個在GitHub上開發原始碼的專案。它的目標是實現羽量級的作業系統虛擬化。讓使用者操作Docker,就像是操作一個羽量級的虛擬機器。 優勢 快速發表和部署 高效的部署和擴充 資源使用率高 管理簡單 核心 Image映像檔 Docker
Thumbnail
Docker是由GO語言實現,是一個在GitHub上開發原始碼的專案。它的目標是實現羽量級的作業系統虛擬化。讓使用者操作Docker,就像是操作一個羽量級的虛擬機器。 優勢 快速發表和部署 高效的部署和擴充 資源使用率高 管理簡單 核心 Image映像檔 Docker
Thumbnail
本文介紹了 Docker 的基礎概念,以及在軟體工程環境中的運用。藉由 Docker 的容器化技術和映像檔技術,能夠實現開發和生產環境的一致性,並且支持負載平衡和無縫更新。此外,也提到了 Kubernetes 和 Docker Swarm 這兩個重要工具的用途和適用對象。
Thumbnail
本文介紹了 Docker 的基礎概念,以及在軟體工程環境中的運用。藉由 Docker 的容器化技術和映像檔技術,能夠實現開發和生產環境的一致性,並且支持負載平衡和無縫更新。此外,也提到了 Kubernetes 和 Docker Swarm 這兩個重要工具的用途和適用對象。
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。
Thumbnail
前言 大家好在先前我們講了什麼是 Docker,Docker 好處有什麼以及怎麼安裝 Docker,今天我們要來開始初體驗 Docker 容器,使用後您會發現 Docker 非常的方便快速 Docker Hub 介紹 首先在開始學怎麼抓取 Docker Image 之前,我們要先來介紹 Doc
Thumbnail
前言 大家好在先前我們講了什麼是 Docker,Docker 好處有什麼以及怎麼安裝 Docker,今天我們要來開始初體驗 Docker 容器,使用後您會發現 Docker 非常的方便快速 Docker Hub 介紹 首先在開始學怎麼抓取 Docker Image 之前,我們要先來介紹 Doc
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News