微信雲託管趣味講解:Docker、鏡像、容器的那些事

微信雲託管上線後,有很多同學雖然表現出了極大的好奇心,但礙於對Docker、鏡像和容器等概念的不瞭解望而卻步。

本文就從簡單趣味的角度,帶領大家快速理解入門微信雲託管必備知識點,再把雲託管到底能幫業務做什麼事、有什麼用安排一下!

什麼是Docker?

無論你是沒印象,還是僅僅聽過沒用過,都需要來補補課啦!這是一個基礎點,要考的。

Docker 是用 GO 語言開發的應用容器引擎,基於容器化、沙箱機制的應用部署技術,說白了,Docker 是一個強大的工具

既然是個工具,一定是聽令行事,指令是我們能操作它正確工作的基礎,可以通過3種方式來實現:

  1. Docker 命令
  2. Dockerfile 腳本(微信雲託管推薦)
  3. shell 腳本

那麼,Docker 具體能做什麼事?

首先,它會將你的項目和基礎鏡像按照指令打成一個項目鏡像,緊接着,在微信雲託管/服務器中創建一個容器,讓鏡像轉到容器內運行,從而實現項目的部署。也就是:

指令 -> 鏡像

( 項目+基礎鏡像 ) + Docker = 項目鏡像

微信雲託管 / 服務器 -> 容器

項目鏡像 + 容器 = 項目部署

正確使用 Docker,理想的效果是:開發者只需要提供項目的代碼,經過 Docker 就可以爲你的項目搭建配置好運行環境所需要的一切東西。總之,如果能熟練掌握 Docker 工具,就能夠把鏡像和容器玩的非常溜。

上面引出來兩個概念,第一個是鏡像,第二個是容器,我們將在下文慢慢展開。

什麼是鏡像?

這是一個自計算機誕生就始終伴隨的概念,例如 Windows 系統的 ISO 裝機盤,其實就是鏡像的一種形態,鏡像是固化的、未運行的,但又始終保持運行邏輯的一堆存儲。

當鏡像進入到運行環境中,比如操作系統 ISO 裝進一臺筆記本,就具備運行的實例了,筆記本的計算性能越強,發揮的作用也越大。

前文講到,Docker 根據指令生成鏡像,然後再根據鏡像生成運行的容器實例。

Docker 是構造鏡像的一把好手,而且非常懂得衆人拾柴火焰高的原理:Docker 在構建鏡像時,可以依賴一個父鏡像作爲底層鏡像一起打包,從而構建成一個全新的鏡像。而這個被用作依賴的父鏡像,就是基礎鏡像

因此,在配置項目 Dockerfile 創建鏡像腳本之前,需要先確立一個基礎鏡像。

比如,上圖中引入了 Node 的基礎鏡像,這個鏡像擁有我們運行 Node.js 程序所需的資源。

基礎鏡像存在的地方被稱爲倉庫,類似於我們代碼託管的倉庫或者 npm 倉庫。

倉庫裏有各種運行環境系統和框架語言的鏡像,滿足各種項目的運行條件,例如你要運行 Python 項目,就需要在倉庫中引入 Python 有關的鏡像。當然你也可以製作自己的鏡像只用於自己使用,Docker 作爲工具同樣可以輕鬆做到。

什麼是容器?

還是從 Docker 講起:Docker 根據鏡像生成運行的容器實例後,容器就變成了一個可運行的實體,能夠通過一系列的手段感知它的存在和生命力。

而從鏡像到容器的過程,類似於 class 類 new 了一個對象,Windows 等操作系統被安裝到一臺電腦上。

想必很多開發者都有維護服務器的經驗:給一個已經調試好軟件和網絡的服務器系統打一個鏡像,存個盤,隨後在其他服務器上直接安裝和加載存盤,就可以無需再走一遍“開局打怪”的老路了。

Docker 鏡像和在服務器中自行打的鏡像類似,不同的點在於自行打的鏡像是運行在服務器中,或者分拆的小虛擬機中;而 Docker 的鏡像需要運行在一個“沙盒”環境中,這個“沙盒”環境所依賴的就是容器化技術。

總結一下,容器就是一個鏡像運行在一個特製的環境中而對外的整體

再深度解釋一波,容器是由3個技術,構建出來的進程的隔離環境:

  • Linux Namespace 和 Linux Cgroups,容器化技術的核心,提供了運行時的隔離和資源的授予。
  • rootfs,也就是鏡像,提供了容器的運行內容。

容器和服務器有什麼區別?

在互聯網飛速發展的過程中,服務器在形態上的發展從未停止過,我們來通過一個「全家住房需求」的例子,生動講解一下服務器形態乃至雲計算的發展史:

  1. 自有物理建設(自有服務器實體): 一開始大家都是自己搞幾臺服務器自己維護,通常一停電就全完的那種。

舉例:你自己蓋了一個別墅,兼顧物業管理

  1. 物理託管(託管服務器實體): 去保養和巡檢這實體的東西,成本很高,所以就有了服務商來幫忙託管,找個優質的地方。

舉例:你自己蓋了一個別墅,僱人來負責物業管理

  1. IaaS 基礎設施即服務: 有需求就會有租賃,買不起服務器的話,可以向服務商購買服務器資源,雲計算初具成型。

舉例:沒錢自己蓋別墅,有錢買一層小高樓,自己裝修

  1. PaaS 平臺即服務: 我服務器都不想管了,還要自己處理服務器操作系統和軟件,直接給我一個可以運行項目的資源就行了。

舉例:買一層小高樓或者一間房,精裝修拎包入住

  1. FaaS 功能即服務: 一個核心功能不想做,引入別人提供的服務,然後自己寫點東西把這個給做了。

舉例:家裏有人比較挑,要個風水好的,先安排住酒店

  1. SaaS 軟件即服務: 我代碼都不想寫了,引入一個軟件就把這個事給辦了,你就說能不能吧?

舉例:全家直接住酒店

直到現在,如何提供更受歡迎的資源依然是雲廠商一直在探索的議題。以上幾種狀態始終沒有消失,每一種都有自己情有獨鍾的用戶,用戶關心的訴求點不同,決定了用戶在那個狀態層面。

容器化技術, 以及 Docker 的出現,其實都是在改善 IaaS 中的服務器維護處理所帶來的弊端,比如運行環境不一致、網絡配置繁瑣,雖然有針對的運維工具可以減小這類壓力,但多多少少要付出一些成本。

容器技術,本質上就是在服務器系統上鋪設一個平臺,直接控制和管理底層計算和存儲資源,上層隔離出運行環境供開發者的項目鏡像運行。

好比一個公司買下了一個大的廠房後,分隔出很多小的房間,給每個房間接入水電,然後統一一些標準,再租賃出去。

所以,在開發者的角度,如果無需關心服務器的運行,那麼只需要關注兩件事:

  1. 項目鏡像的打包;
  2. 定義如何管理分隔容器和處理資源。

雲託管和容器服務有什麼區別和聯繫?

容器編排技術和工具的出現,直接將服務器變成了可操作的模塊,開發者只需要操作控制面板就可以指揮服務器進行容器化的步驟了,真正做到了統一管理。

因爲有統一的容器化,所以也不用擔心服務器運行環境差異和網絡配置等問題。相當於給你一個遙控裝置,可以用來創建出很多容器,然後按照實際使用資源付費。

但並不是所有開發者都對容器編排、配置等遊刃有餘,好比開車學駕照,失誤壓線導致考試未通過的事時有發生。

那麼,如果不會開車,但我想要坐車出去玩,怎麼辦?

“代駕”應運而生。

類比到技術層面,微信雲託管不僅提供租車服務(容器服務),還提供“代駕”服務:開發者只需要簡單的配置,提出目的和訴求,微信雲託管就會自動創建並維持你的容器實例計劃,同時還配備很多行業先進的技術體系,保證你能使用到的是最新、最主流的方案和技術。結論就是:

容器服務 + 常用數據庫 + 自動擴縮容 + 運維附屬服務(監控、日誌、告警) + 雲生態 + 微信生態 + X(更多能力開發中)= 微信雲託管 https://cloud.weixin.qq.com/

微信雲託管優惠支持

7折優惠

針對微信雲託管全用戶,直至2021年12月31日,按量付費模式下享7折優惠。

萬元企業激勵計劃

微信雲託管推出企業激勵計劃,萬元補貼、專家級遷移服務、騰訊雲官方流量曝光等,助力企業更低成本享受雲原生帶來的極致體驗。

圖片
長按識別二維碼報名

低價資源包(即將上線)

針對個人開發者和企業新用戶,微信雲託管將推出不同梯度的資源包,進一步降低產品費用。

圖片

關於微信雲託管,使用過程中若有問題或建議,歡迎來到微信開放社區 微信雲託管 專區一起交流討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章