资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Docker技术资料版本,主要内容,一、,Docker,介绍与原理,二、Docker根本操作,三、,Docker,实践案例,什么是,Docker?,Docker,的生态圈,认识,Docker,Docker VS VM,Docker,的原理,Docker,文件系统,Docker,三大核心,Docker,操作,-,仓库,Docker,操作,-,镜像,Docker,操作,-,容器,Docker,操作,-Dockerfile,Docker,操作,-API,待解决的问题,案例架构说明,容器配置存储,-etcd,配置管理代理,-confd,与容器联动,2,第一局部,Docker,介绍与原理,3,什么是,Docker?,Docker,是一个构建在,LXC,之上,基于进程容器的轻量级,VM,解决方案,实现了一种应用程序级别的资源隔离与配额。,Docker,起源于,PaaS,提供商,dotCloud,基于,go,语言开发,遵从开源协议。,Eric Brewer ( Google,基础架构部副总裁 ),容器技术曾是,Google,的基础,我们和,Docker,联手,把容器技术打造为所有云应用的基石。,我们能“升级互联网”至下一代。,Solomon,(,docker,创始人 ),自动打包和部署应用,创建轻量、私有的,PaaS,环境,自动化测试和持续集成,/,部署,部署并扩展,Web,应用、数据库和后端服务器,Docker,应用场景,4,Docker,Docker基于容器技术的轻量级虚拟化解决方案,Docker是容器引擎,把Linux的cgroup、namespace等容器底层技术进展封装抽象后面会介绍此两种技术,为用户提供了创立和管理容器的便捷界面包括命令行和API,Docker 是一个开源工程,诞生于 2021 年初,基于 Google 公司推出的 Go 语言实现,微软,红帽Linux,IBM,Oracle等主流IT厂商已经在自己的产品里增加对Docker的支持。,Google 每周启动超过20亿个容器进展业务效劳,于上个世纪90年代已经开场大规模使用容器技术,5,问题,1、资源利用效率低,2、单物理机多应用无法有效隔离进程空间,cpu资源,磁盘,3、运维部署不便,4、测试、版本管理复杂,5、迁移本钱高,6、传统虚拟机,空间占用大,启动慢,管理复杂,6,Docker-轻量级虚拟化容器技术,1、秒级启动,秒级停顿,空间资源占用极少几M,2、实现进程级别的隔离,3、可在普通效劳器上建立上百个docker实例,4、加快开发测试部署的速度,5、简化版本管理,7,Docker,的生态圈,Official Repos & 14K+ Dockerized Apps,Community,460+ Contributors,250+ Meetups on Docker,2.75M Downloads,6.7K Projects on GitHub,Support,Enterprise Support,Robust Documentation,Implementation, Integration, Training,Network of Partners,The Docker Platform,Docker Engine,Docker Hub,Build, Ship, and Run,Partners,Content,Users,8,认识,Docker,Namespaces (IBM),Cgroups (Google),LXC tools,The Linux Kernel,Git,SELinux (Red Hat),Solaris Zones,BSD Jails,+,Docker,如何和,Linux,内核打交道,?,Docker,平台工具、守护进程,Image,镜像,包括应用及系统的只读数据包,Container,容器,虚拟机的运行实例,Registry,仓库登记,管理镜像文件,Docker hub Docker,官方公有仓库,Docker,专业,术语,9,Docker VS VM,10,Docker,的原理,pid -,进程,net -,网络,ipc -,消息,mnt -,文件系统,uts -,分时,user -,用户,Namespace,资源隔离,LinuxKernel,root namespace,init,pid=1,init,pid=2,bash,pid=3,bash,pid=4,X namespace,init,pid=1,bash,pid=2,11,Docker,文件系统,Docker,镜像位于,bootfs,之上,每一层镜像的下面一层称为其父镜像,(,父子关系,),第一层镜像为,Base Image,容器在最顶层,其下的所有层都为,readonly,Docker,将,readonly,的,FS,层称作,image,Docker AUFS,特性,12,第二局部,Docker根本操作,13,Docker,三大核心,容器,Container,镜像,images,仓库,Repositories,docker Hub,(public registry),Docker-registry,(private registry),14,Docker,操作,-,仓库,docker search centos6,docker pull centos:latest,docker push yorko/mysql:v2,docker login,仓库相关命令,15,Docker,操作,-,镜像,docker images,docker rmi centos:latest,docker build -t=yorko/mysql:v1 .,docker export /home/export.tar,cat /home/export.tar | docker import - yorko-1-export:latest,docker save yorko-1 /home/save.tar,docker load /home/save.tar,镜像相关命令,16,Docker,操作,-,容器,docker run -d -dns 172.17.42.1 -p 8080:80 -p 2022:22,-v /data:/data v /etc/httpd/conf:/etc/httpd/conf -v /etc/httpd/conf.d:/etc/httpd/conf.d v /etc/localtime:/etc/localtime:ro -name webserver1,webserver:v3 /usr/sbin/apache2 -DFOREGROUND,docker start/stop/restart/attach/kill webserver1,容器运行相关命令,17,Docker,操作,-Dockerfile,FROM,ubuntu/14.04,MAINTAINER guol,# install ssh,RUN,apt-get install openssh-server -y,# config ssh,RUN,mkdir /var/run/sshd,RUN,useradd s /bin/bash m d /home/guol guol,RUN,echo guol:123456|chpasswd,ENV,RUNNABLE_USER_DIR /home/guol,EXPOSE,22,CMD,/usr/sbin/sshd -D,Dockerfile,介绍,18,Docker,操作,-API,import docker,c = docker.Client(base_url=tcp:/192.168.1.22:2375,version=1.14,timeout=10),c.create_container(image=yorko/webserver:v1,stdin_open=True,tty=True,command=/usr/bin/supervisord -c /etc/supervisord.conf,volumes=/data,ports=80,22,name=webserver),import docker,c = docker.Client(base_url=tcp:/192.168.1.22:2375,version=1.14,timeout=10),r=c.start(container=webserver, binds=/data:bind: /data,ro: False, port_bindings=80:80,22:2022, lxc_conf=None,publish_all_ports=True, links=None, privileged=False,dns=None, dns_search=None, volumes_from=None, network_mode=None,restart_policy=None, cap_add=None, cap_drop=None),Pydocker,api,操作,19,第三局部,Docker,实践案例,20,待解决的问题,1,、如何实现自动发现?,2,、如何支持多台主宿机?,3、容器效劳的高可用如何保障?,5,、如何实现资源最大化利用?,4、如何保证容器效劳负载均衡?,21,案例架构说明,HTTP request,Haproxy(M),Haproxy(S),Confd, haproxy.cfg,Etcd master,Etcd slave,Server_1,Container_1,App on port,23842,Container_2,App on port,23843,Docker,Server_2,Container_1,App on port,14512,Container_2,App on port,14513,Docker,REST-API,Shell,Docker run,Curl etcd set,Etcd,Confd,架构流程,22,容器配置存储,-etcd,Etcd,是一个高可用的,Key/Value,存储系统,主要用于分享配置和服务发现。,简单:支持,curl,方式的用户,API (HTTP+JSON),安全:可选,SSL,客户端证书认证,快速:单实例可达每秒,1000,次写操作,可靠:使用,Raft,实现分布式,Etcd,介绍,# curl -L :/192.168.1.22:4001/v2/keys/app/servers/web1 -XPUT -d value=“192.168.1.20:23843“,action: get,node: ,createdIndex: 2,key: “/app/servers/web1,modifiedIndex: 2,value: 192.168.1.20:23843,# curl -L :/192.168.1.22:4001/v2/keys/app/servers/web1 -XDELETE,action: delete,node: ,createdIndex: 3,“key: “/app/servers/web1,modifiedIndex: 4,prevNode: ,key: “/app/servers/web1,value: 192.168.1.20:23843,modifiedIndex: 3,createdIndex: 3,23,配置管理代理,-confd,confd,是一个轻量级的配置管理工具。,通过查询,Etcd,,结合配置模板引擎,保持本地配置最新;,定期扫描,配置变更自动,reload,。,Confd,介绍,template,src = haproxy.cfg.tmpl,dest = /etc/haproxy/haproxy.cfg,keys = ,/app/servers,reload_cmd = /etc/init.d/haproxy reload,listen frontend 0.0.0.0:8080,mode,stats enable,stats uri /haproxy?stats,balance roundrobin,option close,option forwardfor,range gets /app/servers/*,server base .Key .Value check,end,listen frontend 0.0.0.0:8080,mode,stats enable,stats uri /haproxy?stats,balance roundrobin,option close,option forwardfor,server web1 192.168.1.20:35343 check,server web2 192.168.1.20:35346 check,server web3 192.168.1.20:35347 check,24,与容器联动,一个,Docker,自动发现,具备容灾与负载均衡的虚拟化平台完美呈现!,25,Q & A,26,谢谢,27,谢谢观赏!,28,2020/11/5,
展开阅读全文