SlideShare a Scribd company logo
1 of 26
Download to read offline
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
云端基于Docker的微服务与持续交付实践
易立,阿里巴巴
云栖社区专家
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
日程
•  Docker与微服务
•  云端生产环境部署
•  应用Docker化改造
•  持续交付流程实践
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
交付方式变革改变了全球经济格局
Docker 改变软件交付方式
“没有集装箱,不可能有全球化。”——《经济学家》
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
Docker in Alibaba
•  支付宝,淘宝的应用运维Docker化
•  阿里百川 TAE
•  阿里云容器服务
•  高性能计算 HPC
•  …
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
加速应用交付,缩短梦想距离
物理服务器、
存储、网络
整体式应用
(monolithic app)
缓慢变化
微服务
快速演化
云计算
传统IT系统 今天
Dev vs. Ops DevOps
大兵团作战 战术小队
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
Docker 与虚拟化技术
•  Docker是一种轻量级的操作系统虚拟化方案
–  细粒度资源隔离 - 敏捷,降低企业成本
–  定义了环境无关的标准的交付、部署规范 - 良好可移植性,提高运维效率
•  结合Docker容器和虚拟化技术
–  利用虚拟机提供弹性基础架构,更好的安全隔离,动态热迁移
–  利用容器技术实现简化应用部署、运维;实现弹性应用架构
VMs
App A App B1 App B2
Bins & Libs Bins & Libs Bins & Libs
Guest OS
(RHEL)
Guest OS
(Ubuntu)
Guest OS
(CentOS)
Hypervisor
Server HW
Containers
App A App B1 App B2
Bins & Libs Bins & Libs
Operating System
Server HW
Docker容器方式
Docker Engine
Hypervisor
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
Cloud Native Computing
Microservice
Docker DevOps
•  定义
–  微服务应用
–  容器化交付
–  DevOps
–  动态管理
•  挑战
–  服务发现、路由
–  服务监控
–  服务生命周期管理
–  自动化运维
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
Docker Machine
图片
阿里云对容器社区的支持
云端漫步:开始 Docker 之旅
•  配置安装
–  安装Docker Toolkit
–  安装云驱动
•  Aliyun ECS driver for Docker Machine
•  AWS, GCE, 等等.
•  在创建Docker运行环境
export	ECS_ACCESS_KEY_ID=xxxxxx	
export	ECS_ACCESS_KEY_SECRET=xxxxxx	
docker-machine	create	–driver	aliyunecs	mytest	
eval	"$(docker-machine	env	mytest)"	
docker	run	-d	nginx
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
生产环境中使用Docker
您还需要:
集群管理
网络
存储
调度
编排
…
图⽚来源 http://www.popularmechanics.com/home/how-to/g172/shipping-container-homes-460309/
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
容器即服务 Container as a Service
Docker	Cloud	
(tutum.co)	
	
Docker	Swarm	API	
Compose	template	
Amazon	EC2	
Container	Service	
	
ECS	API	
Compose	template/
Task	definiKon	
Google	
Container	Engine	
	
Kubernetes	API	
Pod/Service	
	
	
Docker	Swarm	API	
Compose	template	
等等
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
容器集群管理 - Docker Swarm
•  优点
–  支持标准的 Docker API
–  灵活、可插拔的容器调度
•  不足
–  面向容器、缺少微服务支持
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
容器编排 - Docker Compose
•  优点
–  简单好用,便于开发
–  编排容器、存储和网
络
•  不足
–  面向开发和部署,不
支持自动化运维
version: '2'
services:
wordpress:
image: wordpress:4
ports:
- 80
restart: always
links:
- db:mysql
network_mode: bridge
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
restart: always
volumes:
- data:/var/log/mysql
network_mode: bridge
volumes:
data:
driver: local
wordpress	 db	
mysql	
容器	 容器	
data	
volume	
docker-compose up
:docker-compose scale wordpress=3
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
阿里云容器服务
DockerDocker
/VPC
MySQL,,
Mongo …
CI/CD
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
什么应用可以运行在容器中
	
	
	
	
	
Web	 	
REST	API	
CI/CD 	
	
	
Stateful	
Long-Life	
	
	
Stateless	
Short-Life
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
Docker化应用实战: Ghost 博客
ghost:
image: ghost:0.7
ports:
- "2368:2368”
restart: always
	
	
-  	
- 
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
Ghost 博客 – 高可用集群 1
ghost:
image: acs-sample/ghost:0.7
links:
- db:mysql
ports:
- "2368”
labels:
aliyun.scale: '3'
aliyun.routing.port_2368: 'http://
myblog'
restart: always
db:
image: acs-sample/mysql:5.6
environment:
- MYSQL_ROOT_PASSWORD=example
- MYSQL_DATABASE=ghost
- MYSQL_USER=ghost
- MYSQL_PASSWORD=ghost_db_password
restart: always
-  引入负载均衡
-  Ghost容器使用共享数据库
-  数据库容器适合开发,不适合生产环境
rouKng	
MySQL
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
Ghost 博客 – 高可用集群2
ghost: !
image: acs-sample/ghost:0.7!
links: !
- db:mysql !
ports: !
- "2368"!
environment:!
- GHOST_URL=http://my-ghost-
blog.com!
labels:!
aliyun.scale: '3'!
restart: always !
db: !
external: !
host:
rds******.mysql.rds.aliyuncs.com!
ports:!
- 3306!
environment: !
- MYSQL_DATABASE=blog!
- MYSQL_USER=ghost!
- MYSQL_PASSWORD=***********!
-  使用Database as a Service或已有数据库
-  平衡过渡
rouKng	
	 		
MySQL
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
Ghost 博客 – 高可用集群3
•  利用Docker Volume Plugin
支持不同的存储类型
–  块存储
–  对象存储
–  网络文件系统
•  支持第三方存储插件
•  注:Docker Engine的缺陷
rouKng	
OSSFS	 OSSFS	OSSFS	
MySQL
容器化持续集成和交付:Build Once and Deploy Everywhere
Dockerfiles 或
Docker
Compose模板
Pull
Push
Pull Pull Pull
利用Docker镜像实现软件交付
Container-as-a-Service
无缝上云
在开发、测试和生产环境中保证应用的一致性
支持版本管理
快速上线和回滚
本地开发
环境
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
简化的持续交付流程
Web hook Web hook
Docker Compose
Docker
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
	
管理	 CI	Server	
阿里云镜
像服务
CD	Server	
	
开发者
如果构建和UT 	
	
	
	
Push	
Docker镜像和Compose
模板用于集成、测试和部署
完整的持续交付流程
	
Webhook	通知	
	
阿里持续交付平台
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
不可变架构(immutable infrastructure)
•  利用不可变性来运维基础架构: 一旦实例化后,永不改变;只会用
另外的一个实例正确的取代它
•  优点
–  避免环境间的不一致
–  简化部署复杂度
–  低成本回滚
V.S.	
	Pet	 牛群	CaZle
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
Docker:不可变架构梦想成真
•  当您想把Docker容器当做轻量级虚拟机时, 请三思!
•  正确姿势
–  每次代码提交重新构建镜像
–  尽量利用Dockerfile自动构建镜像
•  避免手工修改运行中的容器并提交为镜像
–  尽量不要使用latest作为镜像标签
•  Tips: 利用Git Commit作为镜像tag一部分,便于追踪
–  利用volume保存持久化数据
•  应用和数据分类
唯一不变的就是变
化;不可变架构就
是为了更快的变化
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
跨主机容器网络 – 云端实践
Docker 原生Overlay网络 (VXLAN)
node1	
default	bridge	
c1	 c2	 c3	
default	bridge	
c4	 c5	 c6	
default	bridge	
c7	 c8	 c9	
overlay	
node2	 node3	
VSwitch	 VSwitch	
VRouter	
利用VPC网络方案
VPC	
default	bridge	
c1	 c2	 c3	
eth0	
default	bridge	
c4	 c5	 c6	
eth0	
default	bridge	
c7	 c8	 c9	
eth0	
node1	 node2	 node3	
路由	
	
192.168.100.1	 192.168.100.2	 192.168.100.3	
172.18.1.1/24	 172.18.2.1/24	 172.18.3.1/24	
eth0	 eth0	 eth0	
172.18.1.0/24	>	node1	
172.18.2.0/24	>	node2	
172.18.3.0/24	>	node3	
…
G O P S 2016 全 球 运 维 大 会 · 深 圳 站
谢谢
云栖社区阿里云容器服务团队博客
https://yq.aliyun.com/teams/11

More Related Content

What's hot

美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术团队
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛Edward Kuo
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)Will Huang
 
Oh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes BasicsOh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes BasicsOkis Chuang
 
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)Will Huang
 
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境Amazon Web Services
 
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践美团点评技术团队
 
美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术团队
 
Frontend Devops at Cloudinsight
Frontend Devops at CloudinsightFrontend Devops at Cloudinsight
Frontend Devops at CloudinsightYan Wang
 
Extend the Kubernetes API with CRD and Custom API Server
Extend the Kubernetes API with CRD and Custom API ServerExtend the Kubernetes API with CRD and Custom API Server
Extend the Kubernetes API with CRD and Custom API Serverinwin stack
 
如何規劃與執行大型資料中心遷移和案例分享
如何規劃與執行大型資料中心遷移和案例分享如何規劃與執行大型資料中心遷移和案例分享
如何規劃與執行大型資料中心遷移和案例分享Amazon Web Services
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWill Huang
 
零到千万可扩展架构 AWS Architecture Overview
零到千万可扩展架构 AWS Architecture Overview零到千万可扩展架构 AWS Architecture Overview
零到千万可扩展架构 AWS Architecture OverviewLeon Li
 
2016 Azure Bootcamp Taipei - Infrastructure as Code by Azure Resource Manager...
2016 Azure Bootcamp Taipei - Infrastructure as Code by Azure Resource Manager...2016 Azure Bootcamp Taipei - Infrastructure as Code by Azure Resource Manager...
2016 Azure Bootcamp Taipei - Infrastructure as Code by Azure Resource Manager...howie YU
 
Hyper: 让Pod以VM为边界
Hyper: 让Pod以VM为边界Hyper: 让Pod以VM为边界
Hyper: 让Pod以VM为边界Xu Wang
 
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanAzure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanWill Huang
 
twMVC#26 | Redis資料型別與場景的連結
twMVC#26 | Redis資料型別與場景的連結twMVC#26 | Redis資料型別與場景的連結
twMVC#26 | Redis資料型別與場景的連結twMVC
 
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術Yu Lung Shao
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)Will Huang
 
Aws容器服务详解
Aws容器服务详解Aws容器服务详解
Aws容器服务详解Leon Li
 

What's hot (20)

美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)
 
Oh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes BasicsOh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes Basics
 
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
 
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境
 
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践
 
美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台
 
Frontend Devops at Cloudinsight
Frontend Devops at CloudinsightFrontend Devops at Cloudinsight
Frontend Devops at Cloudinsight
 
Extend the Kubernetes API with CRD and Custom API Server
Extend the Kubernetes API with CRD and Custom API ServerExtend the Kubernetes API with CRD and Custom API Server
Extend the Kubernetes API with CRD and Custom API Server
 
如何規劃與執行大型資料中心遷移和案例分享
如何規劃與執行大型資料中心遷移和案例分享如何規劃與執行大型資料中心遷移和案例分享
如何規劃與執行大型資料中心遷移和案例分享
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, Kubernetes
 
零到千万可扩展架构 AWS Architecture Overview
零到千万可扩展架构 AWS Architecture Overview零到千万可扩展架构 AWS Architecture Overview
零到千万可扩展架构 AWS Architecture Overview
 
2016 Azure Bootcamp Taipei - Infrastructure as Code by Azure Resource Manager...
2016 Azure Bootcamp Taipei - Infrastructure as Code by Azure Resource Manager...2016 Azure Bootcamp Taipei - Infrastructure as Code by Azure Resource Manager...
2016 Azure Bootcamp Taipei - Infrastructure as Code by Azure Resource Manager...
 
Hyper: 让Pod以VM为边界
Hyper: 让Pod以VM为边界Hyper: 让Pod以VM为边界
Hyper: 让Pod以VM为边界
 
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanAzure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
 
twMVC#26 | Redis資料型別與場景的連結
twMVC#26 | Redis資料型別與場景的連結twMVC#26 | Redis資料型別與場景的連結
twMVC#26 | Redis資料型別與場景的連結
 
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
 
Aws容器服务详解
Aws容器服务详解Aws容器服务详解
Aws容器服务详解
 

Viewers also liked

海量统计数据的分布式MySQL集群——MyFOX
海量统计数据的分布式MySQL集群——MyFOX海量统计数据的分布式MySQL集群——MyFOX
海量统计数据的分布式MySQL集群——MyFOXaleafs
 
Python和web开发
Python和web开发Python和web开发
Python和web开发moonbingbing
 
淘宝网的架构演进
淘宝网的架构演进淘宝网的架构演进
淘宝网的架构演进丁 宇
 
2.美团点评技术沙龙08 微服务是银弹么
2.美团点评技术沙龙08   微服务是银弹么2.美团点评技术沙龙08   微服务是银弹么
2.美团点评技术沙龙08 微服务是银弹么美团点评技术团队
 
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践Feng Yu
 
3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)Ufo Qiao
 
管理程式對AWS LAMBDA持續交付
管理程式對AWS LAMBDA持續交付管理程式對AWS LAMBDA持續交付
管理程式對AWS LAMBDA持續交付Amazon Web Services
 
1. 利用微服務架構建立雲端影音平台 (Building Media Platform by Microservices Architecture)
1.	利用微服務架構建立雲端影音平台 (Building Media Platform by Microservices Architecture)1.	利用微服務架構建立雲端影音平台 (Building Media Platform by Microservices Architecture)
1. 利用微服務架構建立雲端影音平台 (Building Media Platform by Microservices Architecture)Amazon Web Services
 
AWS Elastic Beanstalk運作微服務與Docker
AWS Elastic Beanstalk運作微服務與Docker AWS Elastic Beanstalk運作微服務與Docker
AWS Elastic Beanstalk運作微服務與Docker Amazon Web Services
 

Viewers also liked (10)

海量统计数据的分布式MySQL集群——MyFOX
海量统计数据的分布式MySQL集群——MyFOX海量统计数据的分布式MySQL集群——MyFOX
海量统计数据的分布式MySQL集群——MyFOX
 
Python和web开发
Python和web开发Python和web开发
Python和web开发
 
淘宝网的架构演进
淘宝网的架构演进淘宝网的架构演进
淘宝网的架构演进
 
2.美团点评技术沙龙08 微服务是银弹么
2.美团点评技术沙龙08   微服务是银弹么2.美团点评技术沙龙08   微服务是银弹么
2.美团点评技术沙龙08 微服务是银弹么
 
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践
 
3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)
 
管理程式對AWS LAMBDA持續交付
管理程式對AWS LAMBDA持續交付管理程式對AWS LAMBDA持續交付
管理程式對AWS LAMBDA持續交付
 
1. 利用微服務架構建立雲端影音平台 (Building Media Platform by Microservices Architecture)
1.	利用微服務架構建立雲端影音平台 (Building Media Platform by Microservices Architecture)1.	利用微服務架構建立雲端影音平台 (Building Media Platform by Microservices Architecture)
1. 利用微服務架構建立雲端影音平台 (Building Media Platform by Microservices Architecture)
 
AWS Elastic Beanstalk運作微服務與Docker
AWS Elastic Beanstalk運作微服務與Docker AWS Elastic Beanstalk運作微服務與Docker
AWS Elastic Beanstalk運作微服務與Docker
 
雲端媒體串流
雲端媒體串流雲端媒體串流
雲端媒體串流
 

Similar to Gops2016 云端基于Docker的微服务与持续交付实践

Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShopPhilip Zheng
 
前端转行 DevOps 经验分享
前端转行 DevOps 经验分享前端转行 DevOps 经验分享
前端转行 DevOps 经验分享Yan Wang
 
容器式基礎架構介紹
容器式基礎架構介紹容器式基礎架構介紹
容器式基礎架構介紹Philip Zheng
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用謝 宗穎
 
docker intro
docker introdocker intro
docker introkoji lin
 
Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Guangya Liu
 
企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養Philip Zheng
 
雲端技術的新趨勢
雲端技術的新趨勢雲端技術的新趨勢
雲端技術的新趨勢Ben Huang
 
twMVC#30 | 你應該瞭解的 container-on-azure-二三事
twMVC#30 | 你應該瞭解的 container-on-azure-二三事twMVC#30 | 你應該瞭解的 container-on-azure-二三事
twMVC#30 | 你應該瞭解的 container-on-azure-二三事twMVC
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训青帅 常
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践YuLing Liu
 
Docker open stack
Docker open stackDocker open stack
Docker open stackGuangya Liu
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node jsXuefeng Zhang
 
FBTUG - 當NAS遇見智慧農耕
FBTUG - 當NAS遇見智慧農耕FBTUG - 當NAS遇見智慧農耕
FBTUG - 當NAS遇見智慧農耕Jarvis Chung
 
Yog Framework
Yog FrameworkYog Framework
Yog Frameworkfansekey
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍Tianwei Liu
 

Similar to Gops2016 云端基于Docker的微服务与持续交付实践 (20)

Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
 
前端转行 DevOps 经验分享
前端转行 DevOps 经验分享前端转行 DevOps 经验分享
前端转行 DevOps 经验分享
 
容器式基礎架構介紹
容器式基礎架構介紹容器式基礎架構介紹
容器式基礎架構介紹
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
 
docker intro
docker introdocker intro
docker intro
 
Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3
 
企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養
 
Docker應用
Docker應用Docker應用
Docker應用
 
雲端技術的新趨勢
雲端技術的新趨勢雲端技術的新趨勢
雲端技術的新趨勢
 
twMVC#30 | 你應該瞭解的 container-on-azure-二三事
twMVC#30 | 你應該瞭解的 container-on-azure-二三事twMVC#30 | 你應該瞭解的 container-on-azure-二三事
twMVC#30 | 你應該瞭解的 container-on-azure-二三事
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践
 
Docker open stack
Docker open stackDocker open stack
Docker open stack
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
 
FBTUG - 當NAS遇見智慧農耕
FBTUG - 當NAS遇見智慧農耕FBTUG - 當NAS遇見智慧農耕
FBTUG - 當NAS遇見智慧農耕
 
Yog Framework
Yog FrameworkYog Framework
Yog Framework
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
 

More from Li Yi

Evolution of container orchestration in Alibaba Cloud
Evolution of container orchestration in Alibaba CloudEvolution of container orchestration in Alibaba Cloud
Evolution of container orchestration in Alibaba CloudLi Yi
 
云+容器: 重新定义企业IT架构 - 阿里云容器服务 云栖大会 2016
云+容器: 重新定义企业IT架构 - 阿里云容器服务  云栖大会 2016云+容器: 重新定义企业IT架构 - 阿里云容器服务  云栖大会 2016
云+容器: 重新定义企业IT架构 - 阿里云容器服务 云栖大会 2016Li Yi
 
DockerCon US 2016 - Docker Practice in Alibaba Cloud
DockerCon US 2016 - Docker Practice in Alibaba CloudDockerCon US 2016 - Docker Practice in Alibaba Cloud
DockerCon US 2016 - Docker Practice in Alibaba CloudLi Yi
 
IBM开放云架构
IBM开放云架构IBM开放云架构
IBM开放云架构Li Yi
 
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京Li Yi
 
RESTful SOA - 中科院暑期讲座
RESTful SOA - 中科院暑期讲座RESTful SOA - 中科院暑期讲座
RESTful SOA - 中科院暑期讲座Li Yi
 

More from Li Yi (6)

Evolution of container orchestration in Alibaba Cloud
Evolution of container orchestration in Alibaba CloudEvolution of container orchestration in Alibaba Cloud
Evolution of container orchestration in Alibaba Cloud
 
云+容器: 重新定义企业IT架构 - 阿里云容器服务 云栖大会 2016
云+容器: 重新定义企业IT架构 - 阿里云容器服务  云栖大会 2016云+容器: 重新定义企业IT架构 - 阿里云容器服务  云栖大会 2016
云+容器: 重新定义企业IT架构 - 阿里云容器服务 云栖大会 2016
 
DockerCon US 2016 - Docker Practice in Alibaba Cloud
DockerCon US 2016 - Docker Practice in Alibaba CloudDockerCon US 2016 - Docker Practice in Alibaba Cloud
DockerCon US 2016 - Docker Practice in Alibaba Cloud
 
IBM开放云架构
IBM开放云架构IBM开放云架构
IBM开放云架构
 
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
 
RESTful SOA - 中科院暑期讲座
RESTful SOA - 中科院暑期讲座RESTful SOA - 中科院暑期讲座
RESTful SOA - 中科院暑期讲座
 

Gops2016 云端基于Docker的微服务与持续交付实践

  • 1. G O P S 2016 全 球 运 维 大 会 · 深 圳 站
  • 2. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 云端基于Docker的微服务与持续交付实践 易立,阿里巴巴 云栖社区专家
  • 3. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 日程 •  Docker与微服务 •  云端生产环境部署 •  应用Docker化改造 •  持续交付流程实践
  • 4. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 交付方式变革改变了全球经济格局 Docker 改变软件交付方式 “没有集装箱,不可能有全球化。”——《经济学家》
  • 5. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 Docker in Alibaba •  支付宝,淘宝的应用运维Docker化 •  阿里百川 TAE •  阿里云容器服务 •  高性能计算 HPC •  …
  • 6. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 加速应用交付,缩短梦想距离 物理服务器、 存储、网络 整体式应用 (monolithic app) 缓慢变化 微服务 快速演化 云计算 传统IT系统 今天 Dev vs. Ops DevOps 大兵团作战 战术小队
  • 7. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 Docker 与虚拟化技术 •  Docker是一种轻量级的操作系统虚拟化方案 –  细粒度资源隔离 - 敏捷,降低企业成本 –  定义了环境无关的标准的交付、部署规范 - 良好可移植性,提高运维效率 •  结合Docker容器和虚拟化技术 –  利用虚拟机提供弹性基础架构,更好的安全隔离,动态热迁移 –  利用容器技术实现简化应用部署、运维;实现弹性应用架构 VMs App A App B1 App B2 Bins & Libs Bins & Libs Bins & Libs Guest OS (RHEL) Guest OS (Ubuntu) Guest OS (CentOS) Hypervisor Server HW Containers App A App B1 App B2 Bins & Libs Bins & Libs Operating System Server HW Docker容器方式 Docker Engine Hypervisor
  • 8. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 Cloud Native Computing Microservice Docker DevOps •  定义 –  微服务应用 –  容器化交付 –  DevOps –  动态管理 •  挑战 –  服务发现、路由 –  服务监控 –  服务生命周期管理 –  自动化运维
  • 9. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 Docker Machine 图片 阿里云对容器社区的支持 云端漫步:开始 Docker 之旅 •  配置安装 –  安装Docker Toolkit –  安装云驱动 •  Aliyun ECS driver for Docker Machine •  AWS, GCE, 等等. •  在创建Docker运行环境 export ECS_ACCESS_KEY_ID=xxxxxx export ECS_ACCESS_KEY_SECRET=xxxxxx docker-machine create –driver aliyunecs mytest eval "$(docker-machine env mytest)" docker run -d nginx
  • 10. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 生产环境中使用Docker 您还需要: 集群管理 网络 存储 调度 编排 … 图⽚来源 http://www.popularmechanics.com/home/how-to/g172/shipping-container-homes-460309/
  • 11. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 容器即服务 Container as a Service Docker Cloud (tutum.co) Docker Swarm API Compose template Amazon EC2 Container Service ECS API Compose template/ Task definiKon Google Container Engine Kubernetes API Pod/Service Docker Swarm API Compose template 等等
  • 12. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 容器集群管理 - Docker Swarm •  优点 –  支持标准的 Docker API –  灵活、可插拔的容器调度 •  不足 –  面向容器、缺少微服务支持
  • 13. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 容器编排 - Docker Compose •  优点 –  简单好用,便于开发 –  编排容器、存储和网 络 •  不足 –  面向开发和部署,不 支持自动化运维 version: '2' services: wordpress: image: wordpress:4 ports: - 80 restart: always links: - db:mysql network_mode: bridge db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: password restart: always volumes: - data:/var/log/mysql network_mode: bridge volumes: data: driver: local wordpress db mysql 容器 容器 data volume docker-compose up :docker-compose scale wordpress=3
  • 14. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 阿里云容器服务 DockerDocker /VPC MySQL,, Mongo … CI/CD
  • 15. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 什么应用可以运行在容器中 Web REST API CI/CD Stateful Long-Life Stateless Short-Life
  • 16. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 Docker化应用实战: Ghost 博客 ghost: image: ghost:0.7 ports: - "2368:2368” restart: always -  - 
  • 17. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 Ghost 博客 – 高可用集群 1 ghost: image: acs-sample/ghost:0.7 links: - db:mysql ports: - "2368” labels: aliyun.scale: '3' aliyun.routing.port_2368: 'http:// myblog' restart: always db: image: acs-sample/mysql:5.6 environment: - MYSQL_ROOT_PASSWORD=example - MYSQL_DATABASE=ghost - MYSQL_USER=ghost - MYSQL_PASSWORD=ghost_db_password restart: always -  引入负载均衡 -  Ghost容器使用共享数据库 -  数据库容器适合开发,不适合生产环境 rouKng MySQL
  • 18. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 Ghost 博客 – 高可用集群2 ghost: ! image: acs-sample/ghost:0.7! links: ! - db:mysql ! ports: ! - "2368"! environment:! - GHOST_URL=http://my-ghost- blog.com! labels:! aliyun.scale: '3'! restart: always ! db: ! external: ! host: rds******.mysql.rds.aliyuncs.com! ports:! - 3306! environment: ! - MYSQL_DATABASE=blog! - MYSQL_USER=ghost! - MYSQL_PASSWORD=***********! -  使用Database as a Service或已有数据库 -  平衡过渡 rouKng MySQL
  • 19. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 Ghost 博客 – 高可用集群3 •  利用Docker Volume Plugin 支持不同的存储类型 –  块存储 –  对象存储 –  网络文件系统 •  支持第三方存储插件 •  注:Docker Engine的缺陷 rouKng OSSFS OSSFS OSSFS MySQL
  • 20. 容器化持续集成和交付:Build Once and Deploy Everywhere Dockerfiles 或 Docker Compose模板 Pull Push Pull Pull Pull 利用Docker镜像实现软件交付 Container-as-a-Service 无缝上云 在开发、测试和生产环境中保证应用的一致性 支持版本管理 快速上线和回滚 本地开发 环境
  • 21. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 简化的持续交付流程 Web hook Web hook Docker Compose Docker
  • 22. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 管理 CI Server 阿里云镜 像服务 CD Server 开发者 如果构建和UT Push Docker镜像和Compose 模板用于集成、测试和部署 完整的持续交付流程 Webhook 通知 阿里持续交付平台
  • 23. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 不可变架构(immutable infrastructure) •  利用不可变性来运维基础架构: 一旦实例化后,永不改变;只会用 另外的一个实例正确的取代它 •  优点 –  避免环境间的不一致 –  简化部署复杂度 –  低成本回滚 V.S. Pet 牛群 CaZle
  • 24. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 Docker:不可变架构梦想成真 •  当您想把Docker容器当做轻量级虚拟机时, 请三思! •  正确姿势 –  每次代码提交重新构建镜像 –  尽量利用Dockerfile自动构建镜像 •  避免手工修改运行中的容器并提交为镜像 –  尽量不要使用latest作为镜像标签 •  Tips: 利用Git Commit作为镜像tag一部分,便于追踪 –  利用volume保存持久化数据 •  应用和数据分类 唯一不变的就是变 化;不可变架构就 是为了更快的变化
  • 25. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 跨主机容器网络 – 云端实践 Docker 原生Overlay网络 (VXLAN) node1 default bridge c1 c2 c3 default bridge c4 c5 c6 default bridge c7 c8 c9 overlay node2 node3 VSwitch VSwitch VRouter 利用VPC网络方案 VPC default bridge c1 c2 c3 eth0 default bridge c4 c5 c6 eth0 default bridge c7 c8 c9 eth0 node1 node2 node3 路由 192.168.100.1 192.168.100.2 192.168.100.3 172.18.1.1/24 172.18.2.1/24 172.18.3.1/24 eth0 eth0 eth0 172.18.1.0/24 > node1 172.18.2.0/24 > node2 172.18.3.0/24 > node3 …
  • 26. G O P S 2016 全 球 运 维 大 会 · 深 圳 站 谢谢 云栖社区阿里云容器服务团队博客 https://yq.aliyun.com/teams/11