容器云服务架构与运维 课件05 容器镜像_第1页
容器云服务架构与运维 课件05 容器镜像_第2页
容器云服务架构与运维 课件05 容器镜像_第3页
容器云服务架构与运维 课件05 容器镜像_第4页
容器云服务架构与运维 课件05 容器镜像_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

容器云服务架构与运维单元5容器镜像学习目标了解Docker镜像的概念及系统架构、了解DockerCommit的概念和Dockerfile的区别、了解Commit的操作方法和Dockerfile的编写方式;掌握使用DockerCommit构建镜像、使用Dockerfile构建镜像等技能;5.1制作容器镜像的方式5.2容器镜像制作5.1制作容器镜像的方式5.1.1Docker镜像介绍Docker镜像概念Docker镜像是一个只读的Docker容器模板,也是一个独立的文件系统,其中包含了启动Docker容器时所需要的文件系统结构及其内容,因此镜像也是启动Docker容器的基础。Docker镜像的文件内容以及一些运行Docker容器的配置文件共同组成了Docker容器的静态文件系统运行环境Rootfs,也可以把它理解为Docker镜像是Docker容器的静态视角,Docker容器是Docker镜像的运行状态。5.1.1Docker镜像介绍镜像系统结构5.1.1Docker镜像介绍构建镜像的方法5.1.1Docker镜像介绍Dockerfile介绍Dockerfile是一个包含组合镜像命令的文本文档,可以用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成镜像。在Dockerfile中,dockerbuild命令用于从Dockerfile中构建镜像。可以在dockerbuild命令中使用-f参数指向文件系统中任何位置的Dockerfile,语法如下所示:#dockerbuild-f/path/to/a/Dockerfile5.1.1Docker镜像介绍Dockerfile介绍Dockerfile的主要指令如下:①FROM:指定基础镜像,这个参数必须为第一条命令。②MAINTAINER:添加维护者信息。③RUN:构建镜像时执行的命令。④ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget。⑤COPY:功能类似ADD,但是不会自动解压文件,也不能访问网络资源。⑥CMD:构建容器后调用,也就是在容器启动时才进行调用。5.1.1Docker镜像介绍Dockerfile介绍⑦ENTRYPOINT:配置容器,使其可执行化。配合CMD时可省去“application”,只使用参数。⑧LABEL:用于为镜像添加元数据。⑨ENV:设置环境变量。⑩EXPOSE:指定与外界交互的端口。⑪VOLUME:用于指定持久化目录。⑫WORKDIR:工作目录,类似于cd命令。5.1.1Docker镜像介绍Dockerfile介绍⑬USER:指定运行容器时的用户名或UID,后续的RUN也会使用指定用户。使用USER指定用户时,可以使用用户名、UID或GID,或是两者的组合。当服务不需要管理员权限时,可通过该命令指定运行用户。⑭ARG:用于指定传递给构建运行时的变量。⑮ONBUILD:用于设置镜像触发器。5.2容器镜像制作制作容器镜像节点的规划5.2.1容器镜像制作方式介绍环境准备准备好VMwareWorkstation工具和CentOS7.5版本虚拟机,使用CentOS7.5虚拟机快照,克隆一台虚拟机,云主机配置自定义,推荐配置2vCPU、4GB内存、40GB硬盘,网络使用NAT模式,docker节点IP设置为5,推荐设置主机密码为000000。在进行容器网络实验前,自行将虚拟机配置好IP、安装Docker服务,关闭SELinux和防火墙服务。5.2.1容器镜像制作方式介绍环境准备5.2.1容器镜像制作方式介绍使用dockercommit构建镜像根据用户请求判定是否暂停该Docker容器的运行。将容器的读写层导出打包。DockerDaemon接收到对应的HTTP请求后,需要执行的步骤如下。在层存储中注册读写层差异包。更新镜像历史信息和rootfs。如果指定了repository信息,则给镜像添加标签信息。5.2.1容器镜像制作方式介绍使用dockercommit构建镜像dockercommit命令dockercommit[选项]<容器ID或容器名>[<仓库名>[:<标签>]]-a:提交镜像的作者。-m:提交时的说明文字。-p:在提交时,将容器暂停5.2.1容器镜像制作方式介绍使用dockercommit构建镜像使用dockercommit的方式,在基础容器CentOS中安装JavaJDK1.8环境,然后将容器打包成镜像,步骤如下。(1)上传基础镜像将提供的centos_latest.tar镜像上传至docker节点的/root目录下,然后上传至本地,命令如下:[root@docker~]#dockerload-icentos_latest.tar2653d992f4ef:Loadinglayer[===============>]216.5MB/216.5MBLoadedimage:centos:latest5.2.1容器镜像制作方式介绍使用dockercommit构建镜像(2)启动容器使用上传的镜像运行容器,命令如下:[root@docker~]#dockerrun-itdcentos:latest/bin/bash55f9b5acba8c282d9dc6bd245da24eb23816f0e775e90184ff9743d55e9bf019如果没有报错,即成功启动容器。5.2.1容器镜像制作方式介绍使用dockercommit构建镜像(3)上传JDK包首先将提供的jdk-8u141-linux-x64.tar.gz包上传至宿主机docker节点的/root目录下,接着将该JDK包传至CentOS容器的/root目录下,命令如下:[root@docker~]#dockercpjdk-8u141-linux-x64.tar.gz2f0155e8ee9e:/root/然后进入容器内,查看JDK包是否被上传,命令如下:[root@docker~]#dockerexec-it2f0155e8ee9e/bin/bash[root@2f0155e8ee9e/]#cd/root/[root@2f0155e8ee9e~]#lsanaconda-ks.cfganaconda-post.logjdk-8u141-linux-x64.tar.gzoriginal-ks.cfg可以看到在容器的/root目录下存在jdk-8u141-linux-x64.tar.gz包,上传成功。5.2.1容器镜像制作方式介绍使用dockercommit构建镜像(4)安装JDK环境首先创建JavaJDK工作目录,命令如下:[root@2f0155e8ee9e~]#mkdir/usr/jdk64/然后将jdk-8u141-linux-x64.tar.gz包解压至/usr/jdk64/目录,命令如下:[root@2f0155e8ee9e~]#tar-zxvfjdk-8u141-linux-x64.tar.gz-C/usr/jdk64/......忽略输出......5.2.1容器镜像制作方式介绍使用dockercommit构建镜像解压完毕后,编辑/etc/profile文件配置环境变量,命令如下:[root@2f0155e8ee9e~]#vi/etc/profile#在/etc/profile文件最下处,添加如下两行exportJAVA_HOME=/usr/jdk64/jdk1.8.0_141exportPATH=$JAVA_HOME/bin:$PATH编辑环境变量完毕后,需要生效环境变量,命令如下:[root@2f0155e8ee9e~]#source/etc/profile5.2.1容器镜像制作方式介绍使用dockercommit构建镜像查看JDK环境是否部署成功,命令如下:[root@2f0155e8ee9e~]#java-versionjavaversion"1.8.0_141"Java(TM)SERuntimeEnvironment(build1.8.0_141-b15)JavaHotSpot(TM)64-BitServerVM(build25.141-b15,mixedmode)重新生效环境变量,JDK环境可用[root@2f0155e8ee9e/]#vi~/.bashrc#将该文件配置成如下:if[-f/etc/bashrc];then./etc/bashrcsource/etc/profilefi5.2.1容器镜像制作方式介绍使用dockercommit构建镜像(5)将容器做成镜像在容器中部署完JDK环境后,使用dockercommit命令将容器制作成镜像,并命名为centos_jdk:1.8,命令如下:[root@docker~]#dockercommit2f0155e8ee9ecentos_jdk:1.8sha256:4fa97e4a6d00046a08810dd50161a58bec07d83f02034213c529e0754bdd6c26查看镜像列表,命令如下:[root@docker~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEcentos_jdk1.84fa97e4a6d003secondsago771MBcentoslatest300e315adb2f9monthsago209MB5.2.1容器镜像制作方式介绍使用dockercommit构建镜像(6)验证镜像首先使用生成的镜像运行容器,然后进入容器内部查看是否带有JDK环境,命令如下:[root@docker~]#dockerrun-itdcentos_jdk:1.8/bin/bash384ebb854046bf21fac81aeef61ff268f149e5ac69be52972026aa2686ba811c[root@docker~]#dockerexec-it384ebb85404/bin/bash[root@384ebb854046/]#java-versionjavaversion"1.8.0_141"Java(TM)SERuntimeEnvironment(build1.8.0_141-b15)JavaHotSpot(TM)64-BitServerVM(build25.141-b15,mixedmode)[root@384ebb854046/]#5.2.1容器镜像制作方式介绍使用dockercommit构建镜像dockercommit的缺点手动创建,容易出错,效率低及可重复性弱构建镜像比较大。使用者并不知道镜像是如何创建出来的,里面是否有恶意程序,可能存在安全隐患。5.2.1容器镜像制作方式介绍使用Dockerfile构建镜像使用Dockerfile构建镜像分为两步:一、创建Dockerfile文件二、使用dockerbuild命令构建镜像5.2.1容器镜像制作方式介绍使用Dockerfile构建镜像

Dockerfile一般分为四部分:-基础镜像信息-维护者信息-镜像操作指令-容器启动时执行指令(CMD/ENTRYPOINT)5.2.1容器镜像制作方式介绍使用Dockerfile构建镜像说明:Dockerfile指令通常使用大写字母。Dockerfile中指令按顺序从上至下依次执行。Dockerfile中第一个非注释行必须是FROM指令。Dockerfile中需要调用的文件必须跟Dockerfile文件在同一目录下,或者在其子目录下。编写Dockerfile文件要求尽可能精简。5.2.1容器镜像制作方式介绍使用Dockerfile构建镜像举例:FROMdaocloud.io/library/centos:7LABELMAINTAINER="Jnvclxl"RUNyuminstall-ywgetR

温馨提示

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

评论

0/150

提交评论