12.微服务的容器化部署应用实战上课笔记_第1页
12.微服务的容器化部署应用实战上课笔记_第2页
12.微服务的容器化部署应用实战上课笔记_第3页
12.微服务的容器化部署应用实战上课笔记_第4页
12.微服务的容器化部署应用实战上课笔记_第5页
已阅读5页,还剩3页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、【2082233439】开发环境测试环境 预生产环境生产环境认识Docker官网: https/get-started/ 是这么定义docker的。Docker is a platform for developers and sysadmins to build, run, and share applications with containers. The use of containers to deploy applications is called containerization.Containers are not new, but their use for easily

2、deploying applications is.Docker是为开发和系统管理员提供容器构建,运行和共享应用程序的。使用容器来部署应用程序称为。容器不是新的,但用于轻松部署应用程序的容器却是新的。Docker的优势(1)有助于Microservi的和部署充分利用物理机资源,同时能够整合服务器资源提高开发效率,测试效率,部署效率,有利于DevOps的,CICD(4)云原生,应用更好地迁移Docker安装Docker依赖于系统的一些必要工具yum install -y yum-utils device-mappersistent-data lvm2Device Mapper 是 Linux2.

3、6 内核中支持逻辑卷管理的通用设备机制,而device-mapper-persistent-data和lvm2是Device Mapper驱动程序必须要的工具device-mappersistent-data :驱动管理lvm2: 逻辑卷管理设置Docker安装的yum源yum-config-managerhttps:/d-add-repo/linux/centos/docker-ce.repo安装Dockeryum yumyumclelmakecache fast# 更新 yum 缓存-y install docker-ce # 安装docker-ce启动Dockersystemctl st

4、art docker设置开机启动systemctl start docker.servicesystemctl enable docker.service运行第一个容器接下来,通过Docker部署一个Tomcat容器创建tomcat容器dockull tomcatdocker run -d -name_tomcat -p 8080:8080 tomcat-d 表示运行容器,并返回容器ID-p 将容器的端口到宿主机的端口,第一个8080表示到宿主机的端口,第二个8080到宿主机的8080端口表示tomcat容器的端口,相当于把容器中运行的tomcat的端上进入到容器中docker exec -i

5、t containerid /bin/bash相关命令查看容器列表docker contailer ls进入到容器docker exec -i containerid /bin/bash在容器中安装apt-get update apt-get install vim查看所有容器s -alldocktomcat运行tomcat容器之后,面。, 这个时候会提示400,找不到页原因是用阿里云仓库中提供的tomcat镜像,默认的webapps的名字变成了webapps.dist,导致没有默认可以的页面,所以只需要进入到容器中修改一下就行。docker exec -i containerid /bin/

6、bash删除webapps目录,再执行首页了。ull比较慢mv webapps.dist webapps 。重新就可以进入到tomcat的Dock在上面的案例中,执行dockull 去仓库拉去镜像时,会发现很慢,这是因为docker默认会从库中拉去镜像,这个是国外的将镜像源修改为阿里云登录阿里云,找到 产品与服务 - 容器镜像服务 - 镜像起来比较慢,所以可以通过以下步骤,可以看到下图所示的aliyun镜像加速器地址。执行vim /etc/docker/daemon.json 下面命令,创建/修改文件,并设置地址。registry-mirrors: sudo systemctlsudo sys

7、temctldaemon-reloadrestart docker再次执行dockull tomcat , 就会发现速度快了很多。Docker的整体架构Docker cnt和Docker daemon(守护进程)进行交互。Docker daemon负责对docker container的创建,运行,构造和分发等操作Docker cnt和Docker daemon可以运行在同一系统上,或者可以使用docker cnt连接docker daemonDocker cnt和Docker daemon使用REST API通信,通过UNIX套接字或网络接口进行通信的容器和镜像以下是给的定义:http/re

8、sour/what-containerA container is a standard unit of softwaret packages up code and all its dependenciesso the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of softwaret includes everything n

9、eeded to run an application: code, runtime, system tools, systemlibraries and settings.容器是打包代码以及所有相关依赖项的动到另外一个计算机环境去运行。标准单元,它可以使得应用从一个计算机环境快速可靠的移Docker容器镜像是一个轻巧的、独立的、可执行的包,它包含了运行应用程序所需要的一切要素,如:代码、运行环境、系统工具、系统库以及环境。容器和镜像的关系简单来说可以这样去理解:一个包通过docker 构建之后成为一个image,而这个image在Docker Engine上运行时就变成了容器。每个容器都是相

10、互看作是一个建议版的Linux运行环境,Docker就是利用容器来运行应用的。镜像的的,可以简单的把容器docker的镜像实际上是由一层一层的文件系统组成,这种层级的文件系统叫UnionFS(联合文件系统)。它是一种分层、轻量级并且高性能的文件系统,它支持文件系统的修改作为一次提交来一层一层的叠加。前面资料讲过,Docker容器镜像包含了运行该应用程序所需要的一切统工具、系统库,它的组成形态如下图所示。需要注意的是,这些层都是只读,无法编辑。,如代码、运行环境、系其中,操作系统就是一个基础镜像,所谓的基础镜像就是没有父级镜像。镜像分层demo演示接下来,为了更好的说像分层结构,我写一个Demo

11、给大家看一下创建一个Dockerle# 指明当前要构建的镜像所继承的基础镜像FROM java:8 # 设置工作目录WORKDIR# 把COPY/appo.java拷贝到工作目录 o.java /app# docker镜像编译时出发的动作,它会在当前镜像上执行指定命令并形成一个新的层RUN javac,o.java# docker run执行时,会执行这个命令ENTRYPOjava,o编写一个o.java,其中while循环是为了让容器不结束public classpublic soic void main(String args)System.out.pr while(true)ln(o);

12、执行o-image . 具体的语法为docker build optionsPATH|URL-t 表示设置镜像的名字以及. 表示dockerle的路径,一般是name:tag构建成功之后,通过docker images 就可以看到创建好的镜像o-image 运行这个镜像运行之后由于设置了死循环,所以入到容器层。可以通过dockerexec -it containerId /bin/bash 进构建过程首先FROM java:8表示当前镜像使用的基础镜像层,然后执行RUN,执行RUN命令都是新建一个层,这一层用来编译WORKDIR,所以在构建镜像的每一层都会存在这个工作目录。最终通过docker

13、 run运行,那么在镜像最上层会增加一个容器层,o.java,而由于前面设置了可以通过容器层来镜像。可以写的容器这时可能就有人会问了:如果多个容器共份基础镜像,当某个容器修改了基础镜像的内容,比如/etc 下的文件,这时其他容器的 /etc 是否也会被修改?是不会!原因是对于镜像来说,它是只读的,也就是你无法去修改镜像。那有同学又有疑问了,老师,你前面安装tomcat的时候,不是修改了tomcat这个镜像里面的webapp目录吗?实际上,容器的本质是镜像在运行的时候,在镜像最上层添加了一个可写层,所有的修改都是在这一层来完成的,而这个修改并不会对基础镜像产生影响,修改容器中的数据实际上是先从镜

14、像层把数据到容器层,然后修改之后会把修改之后的数据保存在容器层,镜像层不会发生变化,这个其实就是UnionFS(联合文件系统)来实现的,所以它的影响只局限在当前的容器中。UnionFS的一个最主要的应用是,把一张CD/DVD和一个硬盘目录给联合 mount在一起,然后,你就可以对这个只读的CD/DVD上的文件进行修改(当然,修改的文件存于硬盘上的目录里)。docker run gupaoedu:docker build -t gupaoedu:所有对容器的改动,无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。下面深入容器层的细节。镜像层数

15、量可能会很多,所有镜像层会联合在一起组成一个的文件系统。如果不同层中有一个相同路径的文件,比如 /a,上层的 /a 会覆盖下层的 /a,也就是说用户只能层中,用户看到的是一个叠加之后的文件系统。1. 添加文件:在容器中创建文件时,新文件被添加到容器层中。到上层中的文件 /a。在容器2.文件:在容器中某个文件时,Docker 会从上往下依次在各镜像层中查找此文件。一旦找到,立即将其到容器层,然后打开并读入内存。3. 修改文件:在容器中修改已存在的文件时,Docker 会从上往下依次在各镜像层中查找此文件。一旦找到,立即将其到容器层,然后修改之。4. 删除文件:在容器中删除文件时,Docker 也

16、是从上往下依次在镜像层中查找此文件。找到后,会在容器层中下此删除操作。DockerleFROM指定当前镜像的基础镜像,也就是当前新的镜像是在指定的基础镜像之上运行。FROM ubuntu:14.04RUN在docker build期间执行命令,在build过程中,每一个RUN命令都会新建一个镜像层s:RUN #与终端s命令一样exec:RUNR 可执行文件,参数1,参数2RUN groupadd -r& useradd -r -gENV设置环境变量,可以通过$key来值,并且还可以通过 docker run -e key=value来设置环境变量的COPY/ADD将主机的文件解压到镜像内,如果

17、目录不存在,会自动创建所需要的目录,注意只是,不会提取和COPY docker-entrypo.sh /usr/local/bin/ADD和COPY的作用类似,只是ADD会对压缩文件进行自动解压WORKDIR指定镜像的工作目录,之后CMD令都是基于此目录工作,若不存在则创建容器启动的时候默认会执行令,若有多个CMD命令,则最后一个生效。ENTRYPO功能和CMD类似,但是和CMD不同的是,docker run执行的时候,可以在命令行参数中指定要运行的程序来覆盖Dockerle中运行的指令。而ENTRYPO不同,它无法通过docker run令行参数来覆盖ENTRYPO需要执行的指令,而且命令行中的数据会被当做参数传递给ENTRYPO指令指定的程序。他们的相同点都是在docker运行的时候会默认触发执行令。EXE指定镜像要的端口,启动镜像时,可以使用-p将该端口给宿主

温馨提示

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

最新文档

评论

0/150

提交评论