軟體工程的基石:Docker,撐起千萬級別伺服器的絕對基石,基礎介紹

閱讀時間約 3 分鐘

軟體工程的基石:Docker,這個名詞或許對於很多新手都很陌生,但他卻決定了上百萬名工程師能順利交付程式碼,甚至這項技術也可以說他撐起千萬級別伺服器的絕對基石

為什麼需要 Docker?

讓我們來看一個還蠻經典的例子:
老板:「為什麼程式碼在公司伺服器上炸了?!」
工程師:「可是它在我的電腦上運行得很好啊!」
老板:「可是伺服器炸了!!!」

這種問題的一個常見原因是工程師使用的電腦與伺服器的作業系統不同,導致相容性問題。

而 Docker是怎麼解決這個問題的呢?
Docker 有一個概念就是「容器 Container」,其實就是在電腦當中模擬出虛擬電腦出來,讓這個虛擬電腦來運行程式。
他允許程式運行在這個隔離的空間,這種隔離讓開發和生產環境的一致性得以保證,大幅降低出錯的可能性。

另一個關鍵概念是「映像檔 Image」,這相當於容器的藍圖。
映像檔包含了應用運行所需的一切資源,從操作系統到應用配置。
當建立容器時,Docker 會根據這份藍圖來創造一個完全相同的運行環境。

一台電腦可以同時運行多個容器,而這些容器彼此獨立且互不干擾。


在理解了 Docker 的容器概念,我們來研究一下

Docker 是如何支撐起千萬級用戶流量的伺服器的。

首先有個重點需要去知道,Docker 實際上僅是一個容器化技術
可以將服務打包成一個能隨時部署的寶可夢球(? ​

為了支撐起巨大的流量我們會使用其它工具
比如說 Kubernetes(簡稱 k8s) 或 Docker Swarm 來做到大型服務需要的兩個重大功能
負載平衡與無縫更新


什麼是負載平衡

為了應付大量人流,用上性能越好的伺服器能同時服務更多人
但隨著用戶增加,即使是最頂尖的設備也可能會達到極限。
而且前期可能沒那麼多錢購置頂尖伺服器
那⋯科技不夠,人數來湊
通常大公司會讓多台電腦同時運行同個服務
平均分散壓力這時候,容器化技術就派上用場了。
當用戶量少時,可以只運行少數幾個容器;
當用戶激增時,可以迅速擴展到更多的容器來應對需求。
此外,Docker 的映像檔技術保證了部署的快速與一致性,使得伺服器能夠在幾秒鐘內啟動新的容器,靈活應對流量波動。這種快速部署的能力尤其適合處理瞬間的高流量事件。


什麼是負載平衡

無縫更新指的是在不中斷服務的情況下更新應用
其實原理很簡單,我們知道伺服器中會同時有好幾個容器在運作
那就先讓一個容器下線更新,其他容器維持舊版本運作,等更新完畢在上線換其他容器更新,便能達成永遠有 working 的容器服務使用者


然而正如我剛剛所提到 Docker 只是容器化技術,他只能把服務包成一個容器
也就是說 Docker 只要涉及到多個容器的處理,那就已經超過 Docker 的管轄範疇了


這時候就該 k8s 和 Docker Swarm 上場了!

他們都是一種容器編排平台,能夠支援自動部署、無縫更新、負載平衡的管理

你可以想像成容器們的主管。

k8s 的設計目標是提高大規模應用的可擴展性和容錯性。

然而,k8s 的設置和運維成本相對較高,可能不適合中小新創或企業。

Docker Swarm 則是 Docker 自家的容器編排工具,對已熟悉 Docker 的團隊,有著相對低的成本。




avatar-img
1會員
3內容數
Ray 貓 - 全端網頁工程師、遊戲開發師 這邊會分享一些科技相關、視覺藝術、前端的最新資訊 - 台灣大學課程網全端工程師 Ziphus 獨立開發者 - 喜歡挑戰也喜歡冒險 電子郵件 ray948787@gmail.com
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
Docker是由GO語言實現,是一個在GitHub上開發原始碼的專案。它的目標是實現羽量級的作業系統虛擬化。讓使用者操作Docker,就像是操作一個羽量級的虛擬機器。 優勢 快速發表和部署 高效的部署和擴充 資源使用率高 管理簡單 核心 Image映像檔 Docker
Docker是一種容器化技術,可以將應用程式及相關依賴項目打包到一個容器中。這篇文章介紹了安裝Docker的步驟,以及幾個比較偏向使用者的應用程式。
Thumbnail
前言 上次講到 Dockerfile、DockerImage、Docker Container 他們之間的關係,今天我們要來熟悉 Docker Image 如何使用,教你如何抓取雲端上的 Docker Image, Docker Image 下載來源 當我們今天要要使用 Docker Imag
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
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 如此受人喜歡 ? 現在就來講述 Docker 有什麼好處 跨平台 Docker 可以確保在不同的作業系統是可運作的,可減少機器運作的問題 版本控制 打
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
Docker是由GO語言實現,是一個在GitHub上開發原始碼的專案。它的目標是實現羽量級的作業系統虛擬化。讓使用者操作Docker,就像是操作一個羽量級的虛擬機器。 優勢 快速發表和部署 高效的部署和擴充 資源使用率高 管理簡單 核心 Image映像檔 Docker
Docker是一種容器化技術,可以將應用程式及相關依賴項目打包到一個容器中。這篇文章介紹了安裝Docker的步驟,以及幾個比較偏向使用者的應用程式。
Thumbnail
前言 上次講到 Dockerfile、DockerImage、Docker Container 他們之間的關係,今天我們要來熟悉 Docker Image 如何使用,教你如何抓取雲端上的 Docker Image, Docker Image 下載來源 當我們今天要要使用 Docker Imag
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
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 如此受人喜歡 ? 現在就來講述 Docker 有什麼好處 跨平台 Docker 可以確保在不同的作業系統是可運作的,可減少機器運作的問題 版本控制 打
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇