過去的幾年時間,科技發生了巨大變化,從物理服務器到虛擬服務器,再到擁有PaaS環境的云計算。不論是否采用了全新架構,Docker鏡像都可以在當前環境中很容易地被使用。要使用Docker,并不需要立即從單體應用程序遷移到面向服務架構。有很多用例允許在不同層次上集成Docker。
Docker常用于以下場景。
- 使用以鏡像為基礎的部署方式取代類似Capistrano的代碼部署系統。
- 安全地在同一臺服務器中運行遺留應用和新應用。
- 使用一個工具鏈循序漸進地遷移到面向服務架構。
- 管理云端或裸機上的水平擴展性和彈性。
- 確保從開發環境到預演環境到生產環境跨環境的一致性。
- 簡化開發人員的機器設置和一致性。
將應用的后臺程序遷移到Docker集群中,同時保持網頁服務器和數據庫服務器不變是開始使用Docker的常見示例。另一示例是將應用的部分REST API遷移到Docker中運行,前端使用Nginx代理在遺留服務和Docker集群之間路由通信。通過使用此類技術,團隊可以漸進式地從單體應用無縫地遷移到面向服務架構。
如今的應用程序往往需要幾十個第三方庫,用于加速功能開發或連接第三方SaaS和數據庫服務。每個庫都可能產生bug,或是讓用戶陷入版本依賴的泥沼。再加上庫的頻繁更改,要在基礎設施上完成工作代碼的持續部署而不引起失敗,壓力巨大。
Docker可貴的鏡像思想使得技術團隊在部署工作代碼時,不論是單體架構、面向服務或是二者的混合,由于代碼及其依賴項捆綁在同一個鏡像中,所使用的方式對每次部署都是可測試、可重復、文檔化且一致的。一旦一個鏡像構建完畢,就可以部署到任意多個運行著Docker守護進程的服務器上。
另外一個常見的Docker用例是跨環境部署一個單一容器,其典型的代碼路徑是從開發環境到預演環境再到生產環境。容器為整個代碼路徑提供了一個一致的、可測試的環境。
作為一個開發人員,Docker模型允許在其個人電腦上調試與生產環境完全一致的代碼。開發人員可以很容易地下載、運行和調試有問題的生產環境鏡像,且無需事先對本地開發環境進行修改。
- 版權信息
- 版權聲明
- 內容提要
- 對本書的贊譽
- 譯者介紹
- 前言
- 本書面向的讀者
- 誰真的在生產環境中使用Docker
- 為什么使用Docker
- 我們所說的“生產環境”
- 哪些東西不要Docker化
- 技術審稿人
- 第1章 入門
- 1.1 術語
- 1.2 從開發環境到生產環境
- 1.3 使用Docker的多種方式
- 1.4 可預期的情況
- 第2章 技術棧
- 2.1 構建系統
- 2.2 鏡像倉庫
- 2.3 宿主機管理
- 2.4 配置管理
- 2.5 部署
- 2.6 編排
- 第3章 示例:極簡環境
- 3.1 保持各部分的簡單
- 3.2 保持流程的簡單
- 3.3 系統細節
- 3.4 集群范圍的配置、通用配置及本地配置
- 3.5 部署服務
- 3.6 支撐服務
- 3.7 討論
- 3.8 未來
- 3.9 小結
- 第4章 示例:Web環境
- 4.1 編排
- 4.2 連網
- 4.3 數據存儲
- 4.4 日志
- 4.5 監控
- 4.6 無須擔心新依賴
- 4.7 零停機時間
- 4.8 服務回滾
- 4.9 小結
- 第5章 示例:Beanstalk環境
- 5.1 構建容器的過程
- 5.2 日志
- 5.3 監控
- 5.4 安全
- 5.5 小結
- 第6章 安全
- 6.1 威脅模型
- 6.2 容器與安全性
- 6.3 內核更新
- 6.4 容器更新
- 6.5 suid及guid二進制文件
- 6.6 容器內的root
- 6.7 權能
- 6.8 seccomp
- 6.9 內核安全框架
- 6.10 資源限制及cgroup
- 6.11 ulimit
- 6.12 用戶命名空間
- 6.13 鏡像驗證
- 6.14 安全地運行Docker守護進程
- 6.15 監控
- 6.16 設備
- 6.17 掛載點
- 6.18 ssh
- 6.19 私鑰分發
- 6.20 位置
- 第7章 構建鏡像
- 7.1 此鏡像非彼鏡像
- 7.2 鏡像構建基本原理
- 7.3 小結
- 第8章 存儲Docker鏡像
- 8.1 啟動并運行存儲的Docker鏡像
- 8.2 自動化構建
- 8.3 私有倉庫
- 8.4 私有registry的擴展
- 8.5 維護
- 8.6 對私有倉庫進行加固
- 8.7 保存/載入
- 8.8 最大限度地減小鏡像體積
- 8.9 其他鏡像倉庫方案
- 第9章 CI/CD
- 9.1 讓所有人都進行鏡像構建與推送
- 9.2 在一個構建系統中構建所有鏡像
- 9.3 不要使用或禁止使用非標準做法
- 9.4 使用標準基礎鏡像
- 9.5 使用Docker進行集成測試
- 9.6 小結
- 第10章 配置管理
- 10.1 配置管理與容器
- 10.2 面向容器的配置管理
- 10.3 小結
- 第11章 Docker存儲引擎
- 11.1 AUFS
- 11.2 DeviceMapper
- 11.3 BTRFS
- 11.4 OverlayFS
- 11.5 VFS
- 11.6 小結
- 第12章 Docker 網絡實現
- 12.1 網絡基礎知識
- 12.2 IP地址的分配
- 12.3 域名解析
- 12.4 服務發現
- 12.5 Docker高級網絡
- 12.6 IPv6
- 12.7 小結
- 第13章 調度
- 13.1 什么是調度
- 13.2 調度策略
- 13.3 Mesos
- 13.4 Kubernetes
- 13.5 OpenShift
- 第14章 服務發現
- 14.1 DNS服務發現
- 14.2 Zookeeper
- 14.3 基于Zookeeper的服務發現
- 14.4 etcd
- 14.5 consul
- 14.6 Eureka
- 14.7 Smartstack
- 14.8 nsqlookupd
- 14.9 小結
- 第15章 日志和監控
- 15.1 日志
- 15.2 監控
- 15.3 小結
- DockOne社區簡介
- 看完了