天天看點

《循序漸進學Docker》——導讀

為什麼要寫這本書

docker自2013年誕生以來,在短短幾年就迅速引爆it技術圈,全球各大知名it企業也紛紛加入。docker社群的火爆程度也是前所未有,周邊的技術案例、平台工具也是層出不窮,其中也不乏一線it公司的身影,比如google、微軟、red hat、vmware等,放眼國内,基于docker技術的創業公司也如雨後春筍,國内網際網路公司的代表bat也開始嘗試在企業内部運用落地。在這樣的大背景下,大家對掌握及運用docker技術的欲望也越來越強烈。是以,四位筆者走到了一起,開始謀劃這本書籍。

筆者都來自騰訊不同僚業群及中心,都有針對各自不同應用場景做docker技術研究及應用的實踐經驗,在研究的過程中,大家也将自己的研究曆程、成果做了聚合,最終形成了本書的初稿,包括讀者比較關心的docker網絡及存儲、日常營運到源碼探索,循序漸進的内容組織結構,可以讓不同水準層次的讀者均能有效地閱讀和吸收。

本書的初衷是将研究、使用docker過程中可能碰到的問題,以及解決的方法與思路做個自我梳理與總結,同時與大家分享。最終目的是讓每位關注docker技術的人受益。

讀者對象

系統架構師、運維人員

營運開發、devops人員

雲計算工程師

系統管理者或企業網管

高等院校計算機專業的學生與教師

如何閱讀本書

本書分為四部分:

第一部分為基礎篇,包括第1至第4章,介紹docker的基礎知識及原理,介紹docker是什麼,可以做什麼,以及如何使用docker技術,包括了安裝、建立容器與鏡像、運作等。

第二部分為進階篇,包括第5至11章,着重講解如何實作容器管理、鏡像管理、倉庫管理、網絡和存儲管理及項目日常維護,又補充了最新版本docker swarm容器叢集和docker插件開發等内容。

第三部分為案例篇,包括第12至第15章,通過對3個不同編排技術實作的docker服務案例講解,讓讀者了解一個完整的平台的搭建。

第四部分為源碼探索篇,為第16章,介紹了docker的源碼結構和如何修改和編譯docker,為讀者更深入學習研究docker提供一種新思路。

其中第三部分以接近實戰的執行個體來講解,相比于前兩部分更獨立。如果你是一名經驗豐富的linux管理者且具有docker基礎,可以直接切入進階篇;但如果你是一名初學者,請一定從docker的基礎理論知識開始學習;如果你對docker的源碼分解比較感興趣,可以直接閱讀第16章。

緻謝

首先要感謝dotcloud公司,是他們創立了docker這個容器引擎,同時也要感謝為docker整個生态圈貢獻大量周邊元件的所有作者,是你們讓docker技術發展得越來越好,開源的精神與力量在你們身上展現得淋漓盡緻。

感謝王冬生兄貢獻他在工作中的案例(docker離線系統應用案例),内容具有非常高的實用價值,感謝公司各位上司及同僚,感謝本書的所有作者,在大家的努力下終于促成了這本書的合作與出版。

感謝機械工業出版社華章公司的編輯楊福川、姜影老師,在這一年多的時間中始終支援我的寫作,你的鼓勵和幫助引導我能順利完成全部書稿。

前言

[第一部分 基礎篇

第1章 全面認識docker

1.1.1 docker的由來

1.1.2 docker為什麼這麼火

1.1.3 docker究竟是什麼

<a href="https://yq.aliyun.com/articles/90000/">1.2 docker的結構與特性</a>

1.2.1 docker構成

1.2.2 docker化應用的存在形式

1.2.3 docker對變更的管理

<a href="https://yq.aliyun.com/articles/90015/">1.3 為什麼使用docker</a>

1.3.1 從代碼管理說起

1.3.2 目前的優化政策

1.3.3 github版的應用部署解決方案

1.3.4 docker應用場景

1.3.5 docker可以解決哪些痛點

1.3.6 docker的使用成本

<a href="https://yq.aliyun.com/articles/90020/">1.4 本章小結</a>

[第2章 初步體驗docker

<a href="https://yq.aliyun.com/articles/90042/">2.2 利用docker搭建個人部落格</a>

2.2.1 傳統的安裝方法

2.2.2 使用docker進行安裝

2.2.3 解惑

2.2.4 其他注意事項

<a href="https://yq.aliyun.com/articles/90045/">2.3 本章小結</a>

[第3章 ubuntu下使用docker

<a href="https://yq.aliyun.com/articles/90057/">3.2 安裝windows和ubuntu雙系統</a>

3.2.1 制作ubuntu安裝u盤

3.2.2 通過u盤安裝ubuntu

<a href="https://yq.aliyun.com/articles/90060/">3.3 在ubuntu下安裝docker</a>

<a href="https://yq.aliyun.com/articles/90092/">3.4 再次體驗docker</a>

3.4.1 再看個人部落格wordpress的搭建

3.4.2 開源的版本控制利器——gitlab

3.4.3 項目管理系統——redmine

<a href="https://yq.aliyun.com/articles/90095/">3.5 本章小結</a>

第4章 docker的基礎知識

4.1 docker的基本概念和常用操作指令

4.1.1 docker三大基礎元件

4.1.2 常用的docker指令

4.1.3 docker的組織結構

4.2 10分鐘的動手教程

4.3 本章小結

第二部分 進階篇

第5章 docker容器管理

5.1 單一容器管理

5.1.1 容器的标示符

5.1.2 查詢容器資訊

5.1.3 容器内部指令

5.2 多容器管理

5.2.1 docker compose

5.2.2 配置檔案

5.3 本章小結

第6章 docker鏡像管理

6.1 認識docker鏡像

6.2 dockerf?ile

6.3 項目中的鏡像分層

6.4 定制私有的基礎鏡像

6.5 本章小結

第7章 docker倉庫管理

7.1 鏡像的公有倉庫

7.1.1 建立docker hub賬戶

7.1.2 基本操作

7.2 私有倉庫

7.2.1 安裝docker-registry

7.2.2 配置檔案

7.3 建構安全的私有倉庫

7.3.1 nginx安裝與配置

7.3.2 ssl證書

7.3.3 用戶端配置

7.4 本章小結

第8章 docker網絡和存儲管理

8.1 docker網絡

8.1.1 docker的通信方式

8.1.2 網絡配置

8.2 docker資料管理

8.2.1 基本介紹

8.2.2 資料卷

8.2.3 資料卷容器

8.2.4 備份、恢複和遷移資料卷

8.3 docker存儲驅動

8.3.1 docker存儲驅動曆史

8.3.2 docker overlayfs driver

8.4 本章小結

第9章 docker項目日常維護

9.1 主控端的管理

9.1.1 安裝docker并啟動

9.1.2 網橋模式

9.2 gitlab的日常維護

9.2.1 項目的建立

9.2.2 代碼版本控制

9.2.3 日常維護

9.3 本章小結

第10章 docker swarm容器叢集

10.1 swarmkit核心設計

10.2 swarmkit叢集搭建

10.2.1 建立manager節點

10.2.2 建立worker節點

10.3 swarmkit基本功能

10.3.1 service建立與删除

10.3.2 service擴容與縮容

10.3.3 service灰階更新

10.3.4 service網絡配置、域名解析和負載均衡

10.3.5 swarmkit節點管理

10.3.6 manager節點和worker節點角色切換

10.4 swarmkit負載均衡原理分析

10.5 本章小節

第11章 docker插件開發

11.1 docker插件工作機制

11.1.1 docker插件接口

11.1.2 插件發現機制

11.1.3 json檔案格式

11.1.4 插件的生命周期

11.1.5 利用systemd socket activation功能管理插件

11.1.6 api格式

11.2 docker volume插件開發

11.2.1 cgroupfs使用方法和工作原理

11.2.2 docker volume接口

11.2.3 實作cgroupfs-volume volume插件

11.3 本章小節

第三部分 案例篇

第12章 docker離線系統應用案例

12.1 為什麼使用docker

12.2 離線系統業務架構

12.3 clip名字服務

12.4 clip名字服務與docker應用

12.5 本章小結

第13章 etcd、cadvisor和kubernetes實踐

13.1 etcd實踐

13.1.1 安裝etcd

13.1.2 使用方法

13.2 cadvisor實踐

13.2.1 安裝cadvisor

13.2.2 cadvisor api

13.3 kubernetes實踐

13.3.1 基本概念

13.3.2 環境說明

13.3.3 環境部署

13.3.4 api常用操作

13.3.5 建立pod單元

13.3.6 實戰案例

13.4 本章小結

第14章 建構docker高可用及自動發現架構實踐

14.1 架構優勢

14.2 架構介紹

14.3 架構搭建

14.3.1 元件環境部署

14.3.2 etcd配置

14.3.3 confd配置

14.3.4 容器送出注冊

14.4 業務上線

14.5 本章小結

第15章 docker overlay network實踐

15.1 環境介紹

15.2 容器與容器之間通信

15.2.1 啟動docker daemon

15.2.2 建立網絡

15.2.3 啟動容器

15.3 docker的vxlan實作

15.3.1 vxlan幀結構

15.3.2 docker内部實作

15.3.3 linux vxlan裝置

15.4 容器通路外部網絡

15.5 外部網絡通路容器

15.6 本章小結

第四部分 源碼探索篇

第16章 docker源碼探索

16.1 docker源碼目錄結構

16.2 源碼編譯docker

16.2.1 修改dockerf?ile

16.2.2 其他

16.2.3 編譯源碼的好處

16.3 輸出函數調用關系

16.4 本章小結

繼續閱讀