Oct 2014 
Docker简介及与OpenStack集成 
刘光亚(liugya@cn.ibm.com) 
Sina weibo: @platformer
调查 
2 © 2013 IBM Corporation 
IBM Technical Computing 
• 多少人听说过docker? 
• 多少人玩过docker? 
• 有没有人在生产环境使用docker?
• Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎 
,源代码托管在GitHub 上, 基于Go语言开发并遵从Apache 2.0协 
议开源。 
3 © 2013 IBM Corporation 
IBM Technical Computing 
什么是Docker
4 © 2013 IBM Corporation 
IBM Technical Computing 
Docker带来虚拟化手段的变化 
VM Instance 
- Guest OS 
= Container
Docker安装 
5 © 2013 IBM Corporation 
IBM Technical Computing 
• 内核大于等于2.6.32-431 
• 安装与平台支持 
– https://docs.docker.com/installation/
Docker的主要概念 
6 © 2013 IBM Corporation 
IBM Technical Computing 
• 镜像image 
• 容器Container 
• 仓库Repo 
• Dockerfile 
– 创建docker镜像
7 © 2013 IBM Corporation 
IBM Technical Computing 
Dockerfile实例 
docker build -t your-tag . 
• https://docs.docker.com/examples/nodejs_web_app/#creating-a- 
dockerfile
8 © 2013 IBM Corporation 
IBM Technical Computing 
Docker的简单使用 
• https://docs.docker.com/userguide/usingdocker/
Port1 Port2 Port3 Port4 
9 © 2013 IBM Corporation 
IBM Technical Computing 
Docker端口映射 
hostA hostB 
Docker 
docker0 
172.17.42.1 
docker0 
172.17.42.1 
Docker 
Container1 
eth0 
172.17.42.2 
Container2 
eth0 
172.17.42.3 
Container3 
eth0 
172.17.42.2 
Container4 
eth0 
172.17.42.3 
eth0 
9.111.244.173 
eth0 
9.111.244.48 
Port11 
Port22 Port33 Port44 
Access to Docker
10 © 2013 IBM Corporation 
IBM Technical Computing 
Docker工作流
hostA hostB 
11 © 2013 IBM Corporation 
IBM Technical Computing 
Docker网络 
• 当docker启动时,它会在宿主机器上创建一个名为docker0的虚拟 
网络接口 
• Docker0作为容器的网关 
Docker 
docker0 
172.17.42.1 
docker0 
172.17.42.1 
Docker 
Container1 
eth0 
172.17.42.2 
Container2 
eth0 
172.17.42.3 
Container3 
eth0 
172.17.42.2 
Container4 
eth0 
172.17.42.3 
eth0 
9.111.244.173 
eth0 
9.111.244.48 
???
hostA hostB 
Container 1 Container 2 Container 3 Container 4 
9.111.244.173 
12 © 2013 IBM Corporation 
IBM Technical Computing 
Docker网络(host模式) 
eth0 
• docker run -i -t --net=host image command 
• 优点 
– Docker容器和Docker服务器的网络配置相同。 
– 不需要复杂的网络配置就可以保证 
• 缺点 
– 端口不能冲突 
eth0 
9.111.244.48
U1301-1 U1301-2 
Docker 
docker0 
172.17.42.2 
172.17.42.3 
172.17.42.1 
docker0 
172.17.41.1 
Docker 
Container1 
eth0 
Container2 
eth0 
Container3 
eth0 
172.17.41.2 
Open vSwitch Open vSwitch 
13 © 2013 IBM Corporation 
IBM Technical Computing 
Docker网络(OVS+GRE) 
br0 gre0 gre0 br0 
• Ovs+GRE保证不同docker服务器上的容器可以通信 
Container4 
eth0 
172.17.41.3 
eth0 
9.111.244.173 
eth0 
9.111.244.48
14 © 2013 IBM Corporation 
IBM Technical Computing 
Docker网络(大使模式1) 
9.21.63.233 
Server Container 
(redis) 
Expose Port 
6379 
Ambassador 
Container 
(redis_ambassado) 
Mapped Port 
6379 
9.21.63.230 
Client Container 
(c2) 
Ambassador 
Container 
(redis_ambassado) 
Expose Port 
6379 
Expose Port 
6379 
c2->redis_ambassado(9.21.63.230)->network->redis_ambassado(9.21.63.233)->redis
15 © 2013 IBM Corporation 
IBM Technical Computing 
Docker网络(大使模式1) 
9.21.63.233 
Server Container 
(redis) 
Expose Port 
6379, 6380 
Ambassador 
Container 
(redis_ambassado) 
Mapped Port 
6379, 6380 
9.21.63.230 
Client Container 
(redis_client1) 
Connect to Port 6379 
Ambassador 
Container 
(redis_ambassado) 
Expose Port 
6379, 6380 
Expose Port 
6379, 6380 
Client Container 
(redis_client1) 
Connect to Port 6380
Docker相关 
16 © 2013 IBM Corporation 
IBM Technical Computing 
• Google Kubernets 
– Google开源的一套Docker集群管理工具 
– https://github.com/GoogleCloudPlatform/kubernetes 
• Tutum 
– 提供了一套非常友好的dashboard 
– 支持创建docker container的application 
• CoreOS 
– CoreOS是一个基于Docker的轻量级容器化Linux发行版,专为大型数据中心而设 
计 
– 通过轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复 
杂度 
• http://panamax.io/ 
– 主要是通过dashboard简化docker应用的部署,类似于Tutum 
• 基于Docker的十大创业公司
Docker集成 
17 © 2013 IBM Corporation 
IBM Technical Computing 
• OpenStack + Docker 
• Hadoop + Docker 
• Spark + Docker 
• Mesos + Docker 
• http://mesosphere.com/
Docker与OpenStack集成 
18 © 2013 IBM Corporation 
IBM Technical Computing 
• Nova集成 
– 通过Nova compute来实现 
– 添加了一个新的nova docker drvier。https://github.com/stackforge/nova-docker 
• HEAT集成 
– 添加了一个新的HEAT Resource:DockerInc::Docker::Container 
– HEAT docker driver直接与docker server交互 
– 没有和nova,cinder,neutron等交互 
• Container As A Service 
– 为OpenStack添加一个新的服务来管理docker container 
– Kilo blueprint:https://review.openstack.org/#/c/114044/ 
– 设计文档:https://wiki.openstack.org/w/images/5/51/Containers_Proposal.pdf
19 © 2013 IBM Corporation 
IBM Technical Computing 
Docker与OpenStack Nova的集成 
• 工作原理 
– 使用 
DockerHTTPClient去 
访问一组Docker HTTP 
API来管理container 
• 参考 
– https://github.com/ 
stackforge/nova-docker 
– https://wiki.openst 
ack.org/wiki/Docker
20 © 2013 IBM Corporation 
IBM Technical Computing 
Docker与OpenStack HEAT的集成 
• 工作原理 
– 使用Docker Python客 
户端去访问一组 
Docker HTTP API来管 
理container 
• 参考 
– https://github.com/Mar 
ouenMechtri/Docker-containers-deployment- 
with- 
OpenStack-Heat
21 © 2013 IBM Corporation 
IBM Technical Computing 
Wordpress Docker Template
22 © 2013 IBM Corporation 
IBM Technical Computing 
Docker运行实例
23 © 2013 IBM Corporation 
IBM Technical Computing 
Nova和HEAT Docker Driver集成 
• https://github.com/MarouenMechtri/Docker-containers-deployment-with-OpenStack-Heat 
• http://techs.enovance.com/7104/multi-tenant-docker-with-openstack-heat
24 © 2013 IBM Corporation 
IBM Technical Computing 
Container As A Service (Kilo Blueprint) 
• 为OpenStack添加一个新的服务来管理docker container 
• Container Service是Container的一个集中管理服务 
• 通过Gantt来进行资源调度,挑选docker server来部署 
container 
• 可以on-demand去创建nova instance
参考 
25 © 2013 IBM Corporation 
IBM Technical Computing 
• Google “OpenStack Docker HEAT NOVA”
26 © 2013 IBM Corporation 
IBM Technical Computing 
Thanks!

Docker open stack

  • 1.
    Oct 2014 Docker简介及与OpenStack集成 刘光亚(liugya@cn.ibm.com) Sina weibo: @platformer
  • 2.
    调查 2 ©2013 IBM Corporation IBM Technical Computing • 多少人听说过docker? • 多少人玩过docker? • 有没有人在生产环境使用docker?
  • 3.
    • Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎 ,源代码托管在GitHub 上, 基于Go语言开发并遵从Apache 2.0协 议开源。 3 © 2013 IBM Corporation IBM Technical Computing 什么是Docker
  • 4.
    4 © 2013IBM Corporation IBM Technical Computing Docker带来虚拟化手段的变化 VM Instance - Guest OS = Container
  • 5.
    Docker安装 5 ©2013 IBM Corporation IBM Technical Computing • 内核大于等于2.6.32-431 • 安装与平台支持 – https://docs.docker.com/installation/
  • 6.
    Docker的主要概念 6 ©2013 IBM Corporation IBM Technical Computing • 镜像image • 容器Container • 仓库Repo • Dockerfile – 创建docker镜像
  • 7.
    7 © 2013IBM Corporation IBM Technical Computing Dockerfile实例 docker build -t your-tag . • https://docs.docker.com/examples/nodejs_web_app/#creating-a- dockerfile
  • 8.
    8 © 2013IBM Corporation IBM Technical Computing Docker的简单使用 • https://docs.docker.com/userguide/usingdocker/
  • 9.
    Port1 Port2 Port3Port4 9 © 2013 IBM Corporation IBM Technical Computing Docker端口映射 hostA hostB Docker docker0 172.17.42.1 docker0 172.17.42.1 Docker Container1 eth0 172.17.42.2 Container2 eth0 172.17.42.3 Container3 eth0 172.17.42.2 Container4 eth0 172.17.42.3 eth0 9.111.244.173 eth0 9.111.244.48 Port11 Port22 Port33 Port44 Access to Docker
  • 10.
    10 © 2013IBM Corporation IBM Technical Computing Docker工作流
  • 11.
    hostA hostB 11© 2013 IBM Corporation IBM Technical Computing Docker网络 • 当docker启动时,它会在宿主机器上创建一个名为docker0的虚拟 网络接口 • Docker0作为容器的网关 Docker docker0 172.17.42.1 docker0 172.17.42.1 Docker Container1 eth0 172.17.42.2 Container2 eth0 172.17.42.3 Container3 eth0 172.17.42.2 Container4 eth0 172.17.42.3 eth0 9.111.244.173 eth0 9.111.244.48 ???
  • 12.
    hostA hostB Container1 Container 2 Container 3 Container 4 9.111.244.173 12 © 2013 IBM Corporation IBM Technical Computing Docker网络(host模式) eth0 • docker run -i -t --net=host image command • 优点 – Docker容器和Docker服务器的网络配置相同。 – 不需要复杂的网络配置就可以保证 • 缺点 – 端口不能冲突 eth0 9.111.244.48
  • 13.
    U1301-1 U1301-2 Docker docker0 172.17.42.2 172.17.42.3 172.17.42.1 docker0 172.17.41.1 Docker Container1 eth0 Container2 eth0 Container3 eth0 172.17.41.2 Open vSwitch Open vSwitch 13 © 2013 IBM Corporation IBM Technical Computing Docker网络(OVS+GRE) br0 gre0 gre0 br0 • Ovs+GRE保证不同docker服务器上的容器可以通信 Container4 eth0 172.17.41.3 eth0 9.111.244.173 eth0 9.111.244.48
  • 14.
    14 © 2013IBM Corporation IBM Technical Computing Docker网络(大使模式1) 9.21.63.233 Server Container (redis) Expose Port 6379 Ambassador Container (redis_ambassado) Mapped Port 6379 9.21.63.230 Client Container (c2) Ambassador Container (redis_ambassado) Expose Port 6379 Expose Port 6379 c2->redis_ambassado(9.21.63.230)->network->redis_ambassado(9.21.63.233)->redis
  • 15.
    15 © 2013IBM Corporation IBM Technical Computing Docker网络(大使模式1) 9.21.63.233 Server Container (redis) Expose Port 6379, 6380 Ambassador Container (redis_ambassado) Mapped Port 6379, 6380 9.21.63.230 Client Container (redis_client1) Connect to Port 6379 Ambassador Container (redis_ambassado) Expose Port 6379, 6380 Expose Port 6379, 6380 Client Container (redis_client1) Connect to Port 6380
  • 16.
    Docker相关 16 ©2013 IBM Corporation IBM Technical Computing • Google Kubernets – Google开源的一套Docker集群管理工具 – https://github.com/GoogleCloudPlatform/kubernetes • Tutum – 提供了一套非常友好的dashboard – 支持创建docker container的application • CoreOS – CoreOS是一个基于Docker的轻量级容器化Linux发行版,专为大型数据中心而设 计 – 通过轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复 杂度 • http://panamax.io/ – 主要是通过dashboard简化docker应用的部署,类似于Tutum • 基于Docker的十大创业公司
  • 17.
    Docker集成 17 ©2013 IBM Corporation IBM Technical Computing • OpenStack + Docker • Hadoop + Docker • Spark + Docker • Mesos + Docker • http://mesosphere.com/
  • 18.
    Docker与OpenStack集成 18 ©2013 IBM Corporation IBM Technical Computing • Nova集成 – 通过Nova compute来实现 – 添加了一个新的nova docker drvier。https://github.com/stackforge/nova-docker • HEAT集成 – 添加了一个新的HEAT Resource:DockerInc::Docker::Container – HEAT docker driver直接与docker server交互 – 没有和nova,cinder,neutron等交互 • Container As A Service – 为OpenStack添加一个新的服务来管理docker container – Kilo blueprint:https://review.openstack.org/#/c/114044/ – 设计文档:https://wiki.openstack.org/w/images/5/51/Containers_Proposal.pdf
  • 19.
    19 © 2013IBM Corporation IBM Technical Computing Docker与OpenStack Nova的集成 • 工作原理 – 使用 DockerHTTPClient去 访问一组Docker HTTP API来管理container • 参考 – https://github.com/ stackforge/nova-docker – https://wiki.openst ack.org/wiki/Docker
  • 20.
    20 © 2013IBM Corporation IBM Technical Computing Docker与OpenStack HEAT的集成 • 工作原理 – 使用Docker Python客 户端去访问一组 Docker HTTP API来管 理container • 参考 – https://github.com/Mar ouenMechtri/Docker-containers-deployment- with- OpenStack-Heat
  • 21.
    21 © 2013IBM Corporation IBM Technical Computing Wordpress Docker Template
  • 22.
    22 © 2013IBM Corporation IBM Technical Computing Docker运行实例
  • 23.
    23 © 2013IBM Corporation IBM Technical Computing Nova和HEAT Docker Driver集成 • https://github.com/MarouenMechtri/Docker-containers-deployment-with-OpenStack-Heat • http://techs.enovance.com/7104/multi-tenant-docker-with-openstack-heat
  • 24.
    24 © 2013IBM Corporation IBM Technical Computing Container As A Service (Kilo Blueprint) • 为OpenStack添加一个新的服务来管理docker container • Container Service是Container的一个集中管理服务 • 通过Gantt来进行资源调度,挑选docker server来部署 container • 可以on-demand去创建nova instance
  • 25.
    参考 25 ©2013 IBM Corporation IBM Technical Computing • Google “OpenStack Docker HEAT NOVA”
  • 26.
    26 © 2013IBM Corporation IBM Technical Computing Thanks!

Editor's Notes

  • #2 主要两块 简单介绍docker OpenStack Docker集成
  • #9 -p 的意思就是 把dockerfile中EXPOSE的所有端口都映射到docker server上
  • #12 docker0并不是正常的网络接口。它只是一个在绑定在docker server上的虚拟以太网桥。它可以使容器与主机相互通信以及容器之间的通信。每次Docker创建一个容器,它就会创建一对对等接口(peer interface),类似于一个管子的两端-在这边可以收到另一边发送的数据包。Docke会将对等接口中的一个做为eth0接口连接到容器上, demo
  • #14 OpenStack nova-docker driver有这种模式 我是手动配置的,为了保证IP不冲突,我将docker0设置为不一样的 demo
  • #20  Nova Docker driver这种方式有些缺点,例如,标准的API 扩展使用虚拟机特有的功能,但这些功能对于Docker并不适用,而且把Docker当作虚拟机来使用,Nova很难利用Docker有用的功能, 例如连接容器(主要指Docker容器间通信),基于以上的原因,Heat是更好的选项。