用 Go 開發的 Docker 竟然在這個大會上首發 | 贈書活動


題圖攝於北京奧林匹克中心

本文部分內容節選自最新出版的《Harbor權威指南》前言,文末有贈書活動,不要錯過。

 

2013 年 3 月 15 日下午,在硅谷的聖克拉拉(Santa Clara)的一個技術大會上,一位身着黑色T恤衫的極客工程師正在進行閃電演講(lightning talk)。因爲只有5分鐘的時間,他的語速很快,配合着同樣快速的鍵盤敲擊,連珠炮似地講解和演示着他們公司的新軟件。演講結束後,演講人立刻被許多粉絲圍繞着索要軟件的試用方式。當時誰也沒有料到,這將是一場劃時代的演講。演講的題目爲「Linux容器的未來」(The Future of Linux Containers),演講人爲 Solomon Hykes,是一家叫做dotCloud 的初創公司的 CEO,他們發佈的新軟件稱爲 「Docker」。

這個大會是Python語言的全球社區聚會PyCon,Docker 之所以在 PyCon 上面首發,因爲最開始是採用 Python 開發的。在後續的版本中,爲了提升運行效率,Docker 已經用 Go 語言重寫了。

 

Docker 在發佈後,獲得空前的成功,以極其迅猛的速度傳遍了全球開發者社區,成爲史上最受歡迎的開發工具之一。Docker 早期版本基於 Linux 自帶的 LXC(LinuX Containers)工具庫,提供了一系列更方便易用的工具鏈,大大降低了普通用戶使用容器的門檻。Docker 和 LXC 相比又有不同的側重點,LXC 主要目的是爲系統管理員創建多個隔離的操作系統虛擬環境,而 Docker 則另闢蹊徑,更側重於開發者的需求,封裝了應用且提供了隔離應用的運行環境,更加輕量和便捷,因而受到開發者的喜愛。

 

Docker 能夠大獲成功,除了簡便易用外,還有另一個居功至偉的「殺手鐗」:容器鏡像。筆者在2015年公衆號文章《Docker鏡像的核心價值》中指出,鏡像技術就是 Docker 軟件的核心所在,包括了鏡像格式的創新和鏡像分發的 Registry 服務。Docker公司有個著名的口號:「Build, Ship and Run」,翻譯過來就是三個動詞:「構建、傳送和運行」,簡練地描繪出了應用開發的精髓,其中隱含的意思是:構建鏡像、傳送鏡像和運行鏡像,一切皆以鏡像爲中心。OCI 組織有三個規範,分別與上述三個動詞對應,即鏡像規範(構建)、運行時規範(運行)和正在制定的分發規範(傳送)。目前儘管這些規範有一些不同的實現,但鏡像規範的實現基本上是以 Docker 的鏡像格式爲主。由此可見,鏡像是容器應用的關鍵技術,圍繞鏡像的一系列管理工作將是實際運維中的重要組成部分。

 

在Docker 出現之前,筆者已經接觸和使用過容器技術。筆者在上一家任職的 Sun公司時,負責運用 Solaris 的容器(Container)技術做解決方案。從 2012 年開始,筆者在 VMware 公司負責 Cloud Foundry 開源 PaaS 項目的技術推廣工作。Cloud Foundry 項目使用了稱爲 Warden 的容器引擎來運行應用。Warden和Docker很類似,都是 PaaS 項目中的容器執行引擎,只是Warden被「埋藏」在Cloud Foundry 項目中,沒有像 Docker 那樣獨立發佈出來。筆者在初次接觸到Docker後,第一感覺是太驚豔了,使用體驗相當流暢,比之前的同類容器方案優秀得多。筆者預感 Docker 將帶來一場深刻的技術革命,後來也得到了印證。

 

筆者帶領團隊對 Docker 進行了研究,發現容器鏡像是 Docker 的命脈所在,但是當時並沒有很好的鏡像管理工具。在一些技術大會上,不少用戶也抱怨在鏡像管理上遇到的諸多難題。針對鏡像管理存在的痛點,筆者的團隊開發了一個容器鏡像管理軟件,在公司內部試用後取得一定的成效。這個軟件就是我們後來開源出來的 Harbor 鏡像倉庫。

 

Harbor 開源後的受歡迎程度遠超我們的預料。伴隨着雲原生應用興起的大潮,容器生態圈如火如荼地發展。Harbor 圖形化的鏡像管理功能獨樹一幟,切中了容器應用開發運維上的要點,在國內獲得大量用戶青睞,並且參與開源項目的開發者也與日俱增。在成爲中國首個加入雲原生計算基金會(CNCF)的開源項目後,Harbor和全球雲原生社區的合作更加緊密,加強了對 Kubernetes 和 Helm 的支持。在 Harbor 2.0 中,還支持 OCI 的鏡像規範和分發規範,可以管理各類雲原生領域的製品。

 

目前在生產系統中部署 Harbor 的用戶已經過千,國內很大一部分的雲原生用戶使用 Harbor 作爲鏡像和 Helm Chart 的製品倉庫。Harbor 的維護者們從微信羣、GitHub 的問題反饋以及郵件組等地方瞭解到不少用戶遇到的問題,這些問題有一部分是因爲用戶對 Harbor 安裝配置等方面理解不完全,還有一部分則是由於文檔資料不完整或者缺失造成的。Harbor 社區的用戶亟需一本參考書來指引 Harbor 系統的使用,然而市面上並沒有這樣的書籍。因此,電子工業出版社的張國霞編輯邀請筆者編寫一本 Harbor 的技術書。筆者和 Harbor 項目的維護者們進行了溝通,大家都一致希望能夠通過本書來完整地介紹 Harbor 項目的方方面面,讓 Harbor 給用戶帶來更大的價值。

本書章節

第1章介紹雲原生應用的產生背景、以鏡像爲主的製品管理原理和規範,以及製品倉庫的作用。

第2章概述Harbor功能和架構,爲讀者理解後續的章節做鋪墊。

第3章詳細講解Harbor的安裝、部署,包括高可用部署的方案要點,還包括對Harbor的入門性介紹。

第4章介紹Harbor支持和管理OCI製品的原理、常見OCI製品的使用方法。

第5章闡釋Harbor的權限管理和訪問控制的原理,以及相關配置方法。

第6章解析Harbor中可使用的安全策略,包括可信的內容分發和漏洞掃描機制。

第7章講解鏡像、Helm Chart等製品在Harbor中遠程複製的原理,以及與其他倉庫服務的集成。

第8章詳述 Harbor 的高級管理功能,包括資源配額、垃圾回收、不可變製品、保留策略、Webhook 等。

第9章解釋 Harbor 生命週期的管理過程,包括備份、恢復、升級的步驟和方法。

第10章梳理 Harbor 的API的使用方法並給出編程示例。

第11章描述 Harbor 後臺異步任務系統的機理,並分析了其主要源代碼的工作原理。

第12章彙集和整理 Harbor 與其他系統的整合方法及社區用戶的成功案例。

第13章介紹 Harbor 開源社區的管理原則、告警機制和開源項目參與方式,並展望項目今後的方向。

 

贈書活動:

《Harbor權威指南》是第一本全面介紹 Harbor 雲原生製品倉庫的書籍,業內多位專家聯袂推薦。由 Harbor 開源項目維護者和貢獻者傾力撰寫,其中不乏 Harbor 項目的創始成員,甚至 Harbor 原型代碼的設計者和編寫者。新書推出後,不少讀者都買書支持,爲感謝廣大讀者,現舉辦贈書活動,參與方法:

1. 在本文末留言,發表對本文內容、Harbor開源項目或雲原生技術的看法;

2. 轉發本文並邀請朋友對您的文後留言點贊,留言點贊數最多的讀者勝出,將獲得《Harbor權威指南》新書一本。

3. 本次活動將送出贈書5本。

截止時間:2020年11月4日23點59分,獲獎者可在後臺告知聯繫方式。

需要本書的讀者可掃碼或點擊「閱讀原文」購買。