教学ppt第8章 docker_第1页
教学ppt第8章 docker_第2页
教学ppt第8章 docker_第3页
教学ppt第8章 docker_第4页
教学ppt第8章 docker_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章Docker北京西普阳光教育科技股份有限公司授课讲师:顾军林目 录Contents01 Docker的基本原理02 实验29:Docker安装部署06 Docker Registry07 实验32:Docker Registry 的搭建和使用03实验30:Docker命令行操作08Kubernetes容器云04 Dockerfile09实验33 Kubernetes搭建和使用05 实验31:Dockerfile创建PHP镜像10本章小结01Docker的基本原理Docker简介Docker 最初是Dotcloud 公司在法国期间发起的一个公司内部项目。它是基于Dotcloud公司多年云服

2、务技术的一次革新,并于2013年3月以Apache 2.0授权协议开源,主要项目代码在Github上进行维护,Docker项目后来还加入了Linux , 并成立推动开放容器联盟。Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的Cgroups、Namespace,AUFS类的Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其他隔离的进程,因此也称其为容器。最初的实现是基于LXC的;从Docker0.7以后开始去除LXC,转而使用自行开发的Libcontainer;从Docker1.11开始,则进一步演进为使用Ru

3、nc和Containerd。Docker 架构图Docker引擎是C/S的架构,Docker客户端与Docker Daemon(守护进程)进行交互,Daemon负责构建、运行和发布Docker容器,Docker的客户端与Daemon通过Restful API进行Socket通信。Docker 架构图Docker基于Linux容器技术(LXC),Namespace,Cgroup,Unionfs(联合文件系统)等技术实现:(1) Namespace(命名空间):每个容器都有自己独立的命名空间,运行在其中的应用像是在独立的操作系统中运行一样,命名空间保证了容器之间彼此互不影响。通过Namespace

4、实现了进程和进程之间所使用的资源隔离,使不同进程之间彼此不可见。Docker用到的命名空间有:PID命名空间:用于隔离进程,容器都有自己独立的进程ID;NET命名空间:用于管理网络,容器有自己独立的Network Info;IPC命名空间:用于访问IPC资源(IPC:Inter Process Communication); MNT命名空间:用于管理挂载点,每个容器都有自己唯一的目录挂载;UTS命名空间:用于隔离内核和版本标识(UTC:Unix TimeProcess System),每个容器都有自己独立的Hostname和Domain。(2) Cgroup(控制组):Cgroup是Linux

5、内核的一个特性,主要用来对共享资源进行隔离、限制、审计等。(3) UnionFS(联合文件系统):是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下Docker 架构图Docker引擎是C/S的架构,Docker客户端与Docker Daemon(守护进程)进行交互,Daemon负责构建、运行和发布Docker容器,Docker的客户端与Daemon通过Restful API进行Socket通信。Docker核心概念Docker核心Image(镜像)容器仓库(Registry)镜像是一个只读模板,由Docker

6、file文本描述镜像的内容。镜像定义类似面对对象的类,从一个基础镜像(Base Image)开始。构建一个镜像实际就是安装、配置和运行的过程。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。Image(镜像)Docker镜像基于UnionFS把以上过程进行分层(Layer)存储,这样更新镜像可以只更新变化的层。Docker的描述文件为Dockerfile,Dockerfile是一个文本文件,基本指令如下:FROM: 定 义 基 础 镜 像 ; MAINTAINER:作者或者维护者; RUN: 运 行 的 Linux 命 令 ; ADD: 增 加 文 件 或 目 录 ; ENV: 定

7、 义 环 境 变 量 ; CMD:运行进程。container 容器容器是一个镜像的运行实例, 容器由镜像创建, 运行用户指定的指令或者着Dockerfile定义的运行指令,可以将其启动、停止、删除,而这些容器都是相互隔离(独立进程),互不可见的。比如运行ubuntu操作系统镜像,-i前台交互模型,-t分配一个伪终端,运行命令为/bin/bash,代码如下:rootdocker # docker run -i -t ubuntu /bin/bashUnable to find image ubuntu:latest locallyTrying to pull repository docker

8、.io/library/ubuntu . latest: Pulling from docker.io/library/ubuntu 6b98dfc16071: Pull complete4001a1209541: Pull complete 6319fc68c576: Pull complete b24603670dc3: Pull complete 97f170c87c6f: Pull complete Digest:sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d仓库(Registry)Dock

9、er Registry也是一个容器,仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括时速云、网易云等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用Push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上Pull下来就可以了。Docker 仓库的概念跟Git类似,注册服务器可以理解为Github这样的托管服务。仓库-容器-镜像关系Rq m si tor y1Ubun tu1地I

10、IpushCOJl)mit U02Docker安装部署【实验29】 Docker安装部署一、实验目的 掌握安装Docker环境前的配置主机项。 掌握在CentOS 7系统上安装Docker服务。 掌握配置国内镜像加速器的方法。二、实验内容在物理机或虚拟机上,安装Docker环境并配置国内镜像加速器。三、实验步骤详细操作步骤见本书提供的操作视频。03Docker命令行操作【实验30】 Docker命令行操作一、实验目的 熟悉使用Docker命令从镜像仓库拉取镜像。 熟悉对镜像的简单操作。 熟悉运行容器及对容器的简单操作。二、实验内容通过命令行操作Docker,对镜像、容器进行简单的操作,加深对D

11、ocker Engine运作方式的理解。三、实验步骤详细操作步骤见本书提供的操作视频。04DockerfileDockerfile简介镜像是多层存储,每一层是在前一层的基础上进行的修改;而容器同样也是多层存储,是以镜像为基础层,在其基础上加一层作为容器运行时的存储层。创建镜像有两种方法,一种是docker commit命令,二是用Dockerfile方法。在介绍docker commit命令前,首先回顾一下对代码的版本控制。当修改代码后,可以使用commit命令变更到版本服务器上。对于容器,当创建容器后,如果后面对容器做了修改,就可以利用commit命令将修改提交为一个新的镜像。Dockerf

12、ile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它简化了从头到尾的流程,并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随各种方法、命令和参数。其产出为一个新的可以用于创建容器的镜像。Dockerfile指令详解(1) FROM格式:FROM FROM指定构建镜像的基础源镜像,如果本地没有指定的镜像,则会自动从Docker的公共库pull镜像下来。 FROM必须是Dockerfile中非注释行的第一个指令,即一个Dockerfile从FROM语句开始。(2) MAINTAINER格式:MAINTAINER 指定创建镜像的用户。(3)

13、RUN每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像,RUN有两种格式:RUN commandRUN “executable”,”param1”,”param2”.Dockerfile指令详解(4) CMDCMD有三种使用格式:CMD “executable”,”param1”,”param2”. CMD “param1”,”param2”CMD command param1 param2(shell from)CMD的目的是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。(5) EXPOSE格式: EXPOSE .E

14、XPOSE指令告诉Docker服务端容器对外映射的本地端口,需要在docker run的时候使用-p或者-P选项生效。(6) ENV格式有两种:ENV #只能设置一个变量ENV =.#允许一次设置多个变量Dockerfile指令详解(7) ARG格式:ARG =ARG和ENV一样,都是设置环境变量。所不同的时,ARG所设置的是构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的。(8) COPY 格式:COPY .COPY “,.”COPY两种使用方式,一种类似于命令行,一种类似于函数调用。如:COPY package.json /usr/src/app/(9) ADDADD指令和CO

15、PY的格式及性质基本一致,只是如果为一个TAR压缩文件,且压缩格式为GZIP、BZIP2及XZ的情况下,那么ADD指令将自动解压缩这个压缩文件到。(10) ENTRYPOINTENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数。(11) VOLUME 格式:VOLUME “”,”. 或VOLUME 容器在运行时应尽量保持容器存储层不发生写操作,数据库类需要保存动态数据的应用,其数据Dockerfile指令详解(12) WORKDIR 格式:WORKDIR 使用WORKDIR指令可以用来指定工作目录(或者称为当前目录),以后各层的当前目录就被为指定的目录。该目录需要已经存在,W

16、ORKDIR并不会帮助开发者建立目录。WORKDIR指令可以在ENV设置变量之后调用环境变量:ENV DIRPATH /pathWORKDIR $DIRPATH/$DIRNAME最终路径则为/path/$DIRNAME。(13) USER 格式:USER USER指令和WORKDIR相似,都可以改变环境状态并影响以后的层。WORKDIR是改变工作目,USER则是改变之后的层执行RUN、CMD及ENCRYPOINT这类命令的身份。当然,和WORKDIR一样,USER只是帮助开发者切换到指定用户而已,如果这个用户不存在,则法切换。05Dockerfile创建PHP镜像【实验31】 Dockerfi

17、le创建PHP镜像一、实验目的 掌握Dockerfile各个命令的使用。 通过Dockerfile创建PHP镜像。二、实验内容在宿主机端安装配置Mariadb数据库服务,使用Dockerfile创建PHP镜像并运行,查看我们在数据库中创建的表是否能够正确显示在Web界面。三、实验步骤详细操作步骤见本书提供的操作视频。06Docker RegistryDocker仓库简介镜像构建完成后,可以很容易的在当前宿主机上运行。但是,如果需要在其他服务器上使用这个镜像,就需要一个集中的存储、分发镜像的服务器,Docker Registry(镜像注册)就是这样的服务。开发者可以通过:的格式来指定具体是这个软

18、件哪个版本的镜像。如果不给出标签,则以Latest作为默认标签。Docker Registry服务可以分为两种。一种为公开并开放给所有的用户使用,包含用户的搜索、拉取,镜像提交时更新,还可以免费保管用户镜像数据。这类服务受制于网络带宽的限制,并不能及时、快速的获取所需要的资源,但是优点是可以获取大部分并可以立即使用的镜像,减少镜像的制作时间。另外一种服务是在一定范围对特定的用户提供Registry服务,一般存在于学校内部、企业内部的服务管理和研发等环境,这在一定程度上保证了镜像拉取的速度,对内部核心镜像数据有保护作用,但是也存在镜像内容不丰富的问题。私有仓库(1) 私有仓库特点仓库(Regis

19、try)是集中存放镜像的地方,在上面我们已经说明了Docker仓库分为公有仓库和私有仓库,然而公有仓库在某些情况下并不适用于公司内部传输。通过对比两种仓库的特点,大致可以得出私有仓库有以下优点: 节省带宽; 传输速度快; 方便存储。(2) Docker Registry工作方式Docker Registry是Image的仓库,当开发者编译完成一个Image时,就可以推送到公共的Registry,如Docker Hub,也可以推送到自己的私有Registry。使用DockerClient,开发者可以搜索已经发布的Image,从中拉去Image到本地,并在容器中运行。07Docker Regist

20、ry的搭建和使用【实验32】 Docker Registry的搭建和使用一、实验目的 掌握在CentOS 7系统下搭建Docker Registry私有镜像仓库; 了解Docker Registry私有镜像仓库的运行原理; 掌握Docker API的使用。二、实验内容将Docker Hub上面的Registry镜像拉取到本地,运行并上传本机镜像进行测试是否可用,另外简单介绍了Docker API的基本使用。三、实验步骤详细操作步骤见本书提供的操作视频。08Kubernetes容器云Kubernetes简介Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用, Kubern

21、etes的目标是让部署容器化的应用简单并且高效(Powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让Apache一直运行,用户不需要关心怎么去做, Kubernetes会自动去监控,然后去重启,新建,总之,让Apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用。Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合

22、,将最终的应用服务交给用户。Kubernetes在模型建立之初就考虑了容器跨机连接的要求,支持多种网络解决方案,同时在Service层次构建集群范围的SDN网络。Kubernetes核心概念(1) PODPOD是Kubernetes的基本操作单元,由相关的一个或多个容器构成,共同对外提供服务。POD是一个统一管理及调度的基本单元,不可分割。(2) Replication ControllerReplication Controller(RC)确保任何时候Kubernetes集群中有指定数量的POD 副本( Replicas ) 在运行, 如果多余指定数量的POD 副本在运行, Replicat

23、ion Controller会杀死多余的POD。(3) ServiceService也是Kubernetes的基本操作单元,每一个服务后面都有多个对应的POD提供支持。(4) LabelLabel是用于筛选POD、Service、Replication Controller的Key/Value键值对。Kubernetes架构InternetKubectl(User Commands)FirewallauthorizationAuthenticationNodekubeletProxyAPISController Manager (replication Controller Etc.)Sche

24、dulingActuatorSchedulerSchedulerRest (PODS,Services, Rep.Controllers)Master components Colocated,or spread across machines,As dictated by cluster size.Node.ContainerdvisorCaPODContainerkubletCCDistributed Watchable Storage (implemented via etcd)PODProxyPODPODDockerCaPODPODDockerdvisorontainer.ontainerKubernetes架构Kubernetes主要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论