Download presentation
Presentation is loading. Please wait.
1
Docker之道 -廖述峰
2
传统部署的缺陷 1.环境管理复杂 -发型版不一致,lib库版本不一致,依赖不一致,bug难预测 -服务与服务之间的兼容问题
-线上环境的不可控因素太多 2.服务器资源浪费 - 开发/测试/运维都需要一定数量服务器 - 服务器满载率低,大部分资源闲置 3.应用迁移 - 系统和应用的耦合度高,新开一个项目或环境,一切从0开始构建。
3
传统部署的应对方式 增加服务器,统一发行版,增加人手
虚拟化技术和云计算的开展-企业内部使用虚拟化 技术,例如OpenStack或者直接使用云主机 自动化部署
4
洗脑环节 -Docker大法好
5
你会怎样构建一个Apache Apache的依赖安装 Apache安装 Apache的配置 功能测试
6
Docker是怎么构建Apache的?
7
Docker with Jenkins 在jenkins中build一个apache容器 已经成功,打开看看吧
8
built by Jenkins
9
“Life is short, We use Docker.”
–马克吐温
10
Docker是什么 Docker是一个go语言编写的封装了lxc的container容器引擎。docker技术的核心是一个操作系统级的虚拟化方案, 可以概括为四个方面:隔离,安全,便携,可度量。 隔离,安全=namespace 可度量=cgroups 便携(不同目录挂载到统一虚拟容器路径)=AUFS
11
Docker沙箱 lxc docker image docker container application
12
Docker的优势 简化配置: 一个镜像,到处运行 代码流水线管理:从开发到上线均一致的环境 提高开发效率:开发更能贴近生产,测试质量前移
整合服务器:降低硬件成本 调试能力:随时回滚,随时开分支 快速部署
13
Dockerfile构建Apache 1.创建dockerfile,准备配置/静态文件
ls apache-config.conf Dockerfile website 2.构建一个apachetest镜像 docker build -t apachetest . 3.运行一个名为testwebsite的apache容器 docker run -d -p 8085:80 --name testwebsite apachetest 4.打开网页 Apache演示站点
14
Dockerfile FROM ubuntu:latest
MAINTAINER Bibin Wilson RUN apt-get update RUN apt-get -y upgrade RUN apt-get -y install apache2 ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 ENV APACHE_PID_FILE /var/run/apache2.pid EXPOSE 80 ADD website /var/www/website ADD apache-config.conf /etc/apache2/sites-enabled/000-default.conf CMD /usr/sbin/apache2ctl -D FOREGROUND
15
built by docker
16
一些可能的疑问 一定要用dockerfile吗? -命令行/dockerfile/fig..
如何去修改配置文件? -v :映射路径或ADD命令 如何查看应用状态? logs -f 容器之间怎么连接? link
17
docker应用场景举例 1.web应用代码在github上,github上代码更新后,用jenkins自动部署。 jenkins启动,pull代码到docker image,然后push到docker hub,然后在几 十台机器上pull新的image,然后启动新的container,关闭旧的container。 2.你可以用docker把数据库的数据与数据库程序本身分离开:用一个container A作为数据存储,然后另一个container B运行数据库。当你想升级数据库时,用新的container C替换掉container B即可,只需一分钟就可以搞定。 3.把docker作为每日集成测试的容器,当容器带-r参数运行,会在指定任务完成后删除自身,通过-v参数可以将测试结果共享到host(测试机器)上,这样可以快速完成测试环境的自动化测试集的回归,而容器基本上是秒开!
18
容器管理系统 UI管理:DockerUI,Seagull 集群管理:Kubernetes Paas平台:Flynn,Deis,Dokku
19
Seagull
20
docker开源项目 Flynn:一个使用Go语言编写的开源PaaS平台
Deis:基于Docker和CentOS构建了一个类Heroku的PaaS系统 Dokku:一个迷你版的Heroku Fig:一个基于Docker的用于快速搭建开发环境的工具 Drone:一个使用Go语言编写的基于Docker的持续集成系统。 Kubernetes:Google的容器集群管理工具,Kubernetes支持跨平台, 它可以在除Google以外的其它云平台中运行。 Boot2Docker:专为Docker而设计的轻量级Linux发型包,解决 Windows或者OS X用户不能安装Docker的问题。
21
讲解内容 传统部署的缺陷(3分钟) 传统部署的应对方式(3分钟) Docker应用场景(8分钟)
容器构建方式Shell-dockerfile - FIG(5分钟) docker的一些概念 镜像/容器/常见参数的意义…. 容器互联与目录挂载(5分钟) 讲解两个demo是如何工作的并答疑(20分钟) Docker容器的管理方式以及一些开源项目
Similar presentations