DOCKER部署

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

DOCKER一种开源应用容器引擎何山2017-07-29培训大纲•简介•安装•三个核心点•高阶•拓展简介什么是虚拟机?•我们常用的虚拟机软件•virtualbox•vmwareworkstation•创建虚拟机需要哪些要素•宿主机•虚拟软件•操作系统镜像系统1wmwareworkstation系统2系统3宿主机系统4系统n系统5通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。简介传统虚拟机存在的问题?•安装麻烦•启动速度慢•硬件资源耗费高简介什么是docker?•Docker是一款虚拟(容器)软件,类似于vmware。•传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。•Docker直接运行于宿主的内核,在宿主的内核上驱动容器的bins和libs,容器内没有自己的内核,而且也没有进行硬件虚拟,因此容器要比传统虚拟机更为轻便。简介什么是docker?简介为什么要用docker?•更有效的利用硬件资源•更快速的启动时间•一致的运行环境•沙箱机制•避免出现“在我电脑上没有问题”这种问题•方便运维•更轻松的迁移•体积小•打包带走•数据卷等简介为什么要用docker?•更容易维护和扩展•官方提供很多的镜像•可以自由扩展和定制•当前最火的虚拟化方案•不会就难以与别的企业沟通简介为什么要用docker?简介安装系统支持:MacOS,Windows,CentOS,Debian,Fedora,RedHat,SUSE,Ubuntu…系统版本:对目前各个系统的新版本支持较好,低版本系统不支持或兼容性较差,例如windows只支持win10和winsever2016,建议安装系统之前在网上进行查阅。Docker版本:安装较新的版本,低版本与高版本存在一些功能差异,低版本的稳定性较差且不支持一些高级功能。系统选择:centos7.3,后面以centos7.3为例进行讲解。安装centos7.3安装docker1.创建用户docker2.以docker用户登录或者登录后切换到docker用户3.yum-yinstalldocker(记得先配置好网络)4.安装完毕安装centos7.3配置docker(迁移数据目录)1.mkdir-p/home/docker/repo2.mkdir-p/home/docker/data3.mkdir-p/home/docker/tmp4.sudomv/var/lib/docker/*/home/docker/repo5.sudorm-rf/var/lib/docker6.sudoln-s/home/docker/repo/var/lib/docker配置完毕安装centos7.3•sudosystemctlstartdocker(启动)•sudosystemctlstopdocker(停止)•sudosystemctlenabledocker(开机启动)•sudosystemctldisabledocker(关闭开机启动)•sudosystemctlstatusdocker(查看状态)•docker--version(查看docker版本)安装三个核心点•镜像•容器•仓库镜像和容器是重点,仓库可暂时只做了解。三个核心点•类似于我们常用的iso系统镜像,在docker中也是通过镜像来产生容器(虚拟机)•不同之处:分层存储•镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。镜像CentOSJAVASSHHadoopCentOSJAVAEmis三个核心点获取镜像:dockerpull[选项][DockerRegistry地址]仓库名:标签例如:dockerpullpostgresdockerpullpostgres:9.4dockerpullregistry.hub.docker.com/postgres:9.4镜像三个核心点列出镜像:dockerimages[OPTIONS][REPOSITORY[:TAG]]例如:dockerimages-adockerimages-q镜像三个核心点删除镜像dockerrmi[OPTIONS]IMAGE[IMAGE...]例如:dockerrmipostgresdockerrmi708517fe9e98docker不允许删除一个正在使用的镜像,当然你可以通过添加-f,--force来强制删除,不过这是不提倡的。镜像三个核心点重命名镜像dockertagIMAGE[:TAG]IMAGE[:TAG]例如:dockertagemis:v1emis-heshan:v1注意:当重命名后,会发现重命名前的镜像也存在,此时只需要通过dockerrmioldName删除即可镜像三个核心点导出镜像dockersave[OPTIONS]IMAGE[IMAGE...]例如:dockersave-o/home/docker/tmp/nginx.tarnginx:1.12注意:此处的镜像名称也可以是镜像的ID,但是最好用镜像名称镜像三个核心点导入镜像dockerload[OPTIONS]例如:dockerload–i/home/docker/tmp/nginx.tar镜像三个核心点制作镜像通常我们有两种方式来制作镜像1.dockerfile2.dockercommit(慎用,黑箱操作,臃肿,不利于维护)这里我们先了解通过dockerfile来制作镜像,因为第二种还需要先学会容器的相关知识。镜像三个核心点dockerfile是一个镜像构建脚本,通过一系列的命令来告诉docker构成一个什么样的镜像,先来了解一些其中的命令。FROM:指定基础镜像,可以指定dockerhub中高质量的官方镜像,也可以指定一个空白镜像scratchRUN:执行命令shell格式:RUN命令,就像直接在命令行中输入的命令一样。例如:RUNyum–yinstallredisexec格式:RUN[“可执行文件”,“参数1”,“参数2”]例如:RUN[‘/usr/sbin/sshd’,‘-D’]COPY:复制文件。例如:COPY/root/emis.jar/root/将构建上下文中/root/emis.jar文件拷贝到镜像/root/目录下镜像-dockerfile三个核心点ADD:更高级的复制例如复制的文件是个压缩包,在复制的过程中会自动解压缩,当然,除非你不需要解压缩(从语义清晰度来讲,建议使用COPY)CMD:容器启动命令,格式与RUN一样,但是目的是指定在容器启动的时候运行的命令。例如:CMD[“nginx”,“-g”,“daemonoff;”],此处应注意命令不能以后台形式运行。ENTRYPOINT:入口点,格式与RUN一样,目的和CMD一样,但是加入该命令后CMD就变成参数,方便我们在运行的时候指定一些运行参数。ENV:设置环境变量。例如:ENVJAVA_VERSION1.7\JAVA_HOME/usr/java/jdk1.7有了上述命令后,在后面语句里面就可以使用$JAVA_VERION,$JAVA_HOME来替代,相当于程序中的定义的常量注意:在同一条语句中,后面无法使用前面定义的变量,未生效?镜像-dockerfile三个核心点ARG:构建参数,和ENV一样,用来设置环境变量,不同之处在于仅存在于构建期,容器运行期不会存在VOLUME:定义匿名卷,实现数据与程序的分离EXPOSE:声明端口,仅仅用来声明哪些端口要映射出去,但是光靠这个并不会真正的映射出去WORKDIR:指定工作目录,指定后,后面的命令会以此目录为基本目录,例如WORKDIR/rootUSER:指定当前用户,例如USERpostgres镜像-dockerfile三个核心点#选择一个已有的os镜像作为基础FROMcentos:6.9#镜像的作者MAINTAINERheshanheshan07@foxmail.com#建立文件夹RUNmkdir/usr/java#安装java环境COPYjdk-7u80-linux-x64.tar.gz/usr/java/#切换工作空间WORKDIR/usr/java/#解压压缩包RUNtar-zxvf/usr/java/jdk-7u80-linux-x64.tar.gz#RUNtar-zxvf/usr/java/jdk-7u80-linux-x64.tar.gz-C/usr/java/#ADDjdk-7u80-linux-x64.tar.gz/usr/java/#设置环境变量ENVJAVA_HOME=/usr/java/jdk1.7.0_80ENVCLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENVPATH=$PATH:$JAVA_HOME/bin#建立文件夹RUNmkdir/root/config#安装emisCOPYapp.jar/root/COPYapplication-development.yml/root/configCOPYapplication-production.yml/root/configCOPYapplication-test.yml/root/config#拷贝ENTRYPOINT文件COPYdocker-entrypoint.sh/usr/local/bin/#创建入口点ENTRYPOINT[docker-entrypoint.sh]#切换工作空间WORKDIR/root/#暴露9090端口EXPOSE9090CMD[test]镜像-dockerfile三个核心点镜像三个核心点•镜像与容器的关系•类似ISO文件与系统的关系•类似类与实例的关系•容器不同于传统意义上的虚拟机,并没有一个完整的操作系统•容器的实质是进程,拥有独立的运行环境,包括文件系统、网络配置、进程空间、用户ID空间•是独立运行的一个或一组应用,以及它们的运行态环境。容器宿主机内核centosdebianAPP1APP2三个核心点启动容器:1,基于镜像新建并启动dockerrun[OPTIONS]IMAGE[COMMAND][ARG...]例如:dockerrun–i-t–d–nameemis-en–p9090:9090–v/docker/tmp:/dockeremis:v1-i以可交互的方式运行,让容器的标准输入保持打开-t分配一个伪终端并绑定到容器的标准输入上-d让容器以后台方式运行--name给容器取一个名字-p将容器内部的端口与外部的端口进行映射-v将容器内部的某个目录与外部的目录进行映射容器三个核心点启动容器:2,将在终止状态的容器重新启动dockerstart[OPTIONS]CONTAINER[CONTAINER...]例如:dockerstartemis-en命令后面可以跟容器的id,也可以跟容器的名称容器三个核心点列出容器:dockerps[OPTIONS]例如:dockerps–a容器三个核心点停止容器:dockerstop[OPTIONS]CONTAINER[CONTAINER...]例如:dockerstopemis-en命令后面可以跟容器的id,也可以跟容器的名称停止后的容器可以通过dockerps–a命令查看到容器三个核心点重启容器:dockerrestart[OPTIONS]CONTAINER[CONTAINER...]例如:dockerrestartemis-en命令后面可以跟容器的id,也可以跟容器的名

1 / 59
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功