学习指南05container部署服务详解_第1页
学习指南05container部署服务详解_第2页
学习指南05container部署服务详解_第3页
学习指南05container部署服务详解_第4页
学习指南05container部署服务详解_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

Docker05(Container内 - 部署服务详内 -Container部署服务详 1、Docker网络概 、内容回 、Docker的网络概 、查看docker0虚拟网络接 、运行一个Container查看网络的分 、inspect命令详细介 、inspect介 、使用inspect查看网络信 、使用inspect信息过滤以及详 2、容器即服务 、创建HTTPServer 、RunningHTTPServerImageas 、连接到HTTP 、遇到问题与分析方 网络原 Dockerfile指令问 、发布Container端 、网络地址转 、获取网络端 PS命 inspect命 port命 、绑定特定IP到 、自动生成Docker主机端 、EXPOSE命令实 4、总结&拾 5、内容预 6、Programming系列附 DockerContainer给容器绑定指定IP自动生成DockerEXPOSE1、Docker网络概、内容截至目前,我们一点一点的理解了Docker的基本使用技术,了解了如何什么事Image,build运行一个ContainerDockerHub的基本使用,还有也顺利的搭建了一个Docker的在自己的局域网内,基础的东西基本上已经掌握,从现在开始我们就来实验学习如何将Docker应用于我们的日常工作中,进入真正的、Docker的网络概像其他网络计算节点一样,Docker户端程序得到,无一例外,如果通过网络进行节点的,都是用IP地址进行识别的,Docker的内部,我们在第一册中就已经了,实现了一套虚拟的网络接口程序,我们先来了解一下Docker大的功能,当容器被运行之后,Docker便会分配一个IP地址给ContainerDocker,Dockerdocker0IPdocker0个虚拟的接口,当然这个IP地址的范围会排除在你的宿主主机之外以免引起网络地址.容器,这些都是由强大的Docker完成的.默认情况下,Docker/16--IPDocker、查看docker0虚拟网络接其中地址被分配给了docker0这个虚拟的接口,该IP的范围是从to、运行一个Container查看网containerIP那么他的网关地址恰巧也会是docker0的地址,我们来验证一下要令讲解之中。、inspect果我们使用daemon的方式运行一个Container,那么你该如何得知该Container的IP地址是什么呢?这个确实一个非常棘手的难题,因为你采用daemon的方式运行了一个Container你就不能进入终端环境,上面说令将不能使用,那么我们应该怎么办呢?万能的Docker提供了这样一个命令,那就是inspect,Docker将他比作.DockerDockerprovidesadockermand,whichisashandyasaarmyknife,andallowustodivedeepintothelow-leveldetailsofthecontaineror、使用inspect查看网络信我们来操作一下,一起来熟悉一下他的使用过程,我们先运行了一个daemon的ContainerpsIP于是我们运行了inspect命令,具体过程如下所示,由于内容非常多,我没有办法全部截图内容超级多,我们想关注的内容都没有出现,它在下一屏幕,他的输出内容是典型的JSONNetwork、使用inspect信息过滤以Bridge:网桥名称,这里显示的Gateway:网关地址,docker0IPAddress:分配给Container的IPIPPrefixLen:表示你用的是IPV4还是PortMap:该属性已经过期了,都 Ports2、容器即服务好了,现在我们已经了解了Docker的网络知识,在这个章节中,通过一个实例来演示,如何运行一个HTTPservices在Docker的容器中。HTTPServerDockerfile如下所示,我将注释也写在了Dockerfile#FROM #Author:AlexWang>##copythe sources.list/etc/apt/#installtheapachehttp apt-getinstall-yapache2&&\apt-getclean#settheapacheENVAPACHE_LOG_DIR/var/log/apache2#launchapache2serverinthe ["/usr/sbin/apache2ctl","-其中上面多了一些COPY指令,原因是因为国外的ap-get源非常的慢,每做一些updte操作要等很久才可以,所以我使用了国内的源,拷贝进入et/pt下,替换了原来的源文件,执行的过程大致如下,由于内容比较多,我大概粘贴一部分即可,另外国内的源文件,我会放在本文章的后面,读者可以替换掉你自己机器上的源数据。imagesapache2现在我们的镜像已经制作好了,使用images命令进行查看、RunningHTTPServerImageassudodockerrun-d非常不容易(本人网络原因)AACHE2的镜像终于创建完成,我们来使用以下这个镜像,我们采取运行的方式,其实在以后的工作中基本上都会采用demon的方式来运行osudodockerrun-d然后使用logs命令查看apache2AH00558:apache2:Couldnotreliablydeterminetheserver'sfullyname,name,using4.Setthe'ServerName'directivegloballytosuppressIP4,好了,我们HTTP好了,我们使用wget连接一下我们搭建的HttpServer我们还可以 host机器上使用浏览器进行一下验证,下面是我的截、遇到问题与apache2Image,build在大家是否已经慢慢开始不怀疑我最开始的只有一行命令就可以搭建一个LAMP的运也许大家看到文章中的演示都是非常流利的下来的,但是我可是几经周折,其中遇到了不少的问题,然后一个一个慢慢的解决,写作的时间都是在我生活的个人实践中,因此比较碎片化,解决这些问题浪费了好几天业余时间.网络原Container,其中apt-get的sources极其的慢,于是查找国内的源,但是国内的源,并非会有一个安装包的所有依赖,于是尝试了很多个国内的source。Dockerfile指令问也许大家注意到了,我们上面 中有这样一段关键的代码,是这样的 apt-getinstall-yapache2&&\apt-getcleanapt-getupdate这一句返回的$?不等于0,导致不能运行下去,于是我将这一个指令拆分成两个指令,于是有了 apt-getinstall-yapache2&&\apt-getclean但是还是一如既往,出现下面的截图失败信我们增加一个逻辑或,让update操作总是被执行,但是不要计较他的全部成功与否 apt-getupdate| apt-getupdate|echo“ignoretheupdate apt-getinstall-yapache2&&\apt-getcleanDocker的Host机还是其他的Container都能对其,但是尽管如此,在Host机器以一种是将端口一同绑定作为服务发布,另外一种是借助于EXPOSE这个Dockerfile的指令、发布Container我们看一下如何借助于绑定端口的形式,让外界到我们的服务呢,Docker的run命令有若干个选项,其中-p就是用来进行绑定端口信息的,他有四种命令参数,大致如下所示sudodockerrun-d-p80:80--name="portbinding_apache2"HOSTPORTDockerHostIP址,HostPort是当前host器的端口,ip是Container的IP地址,containerPort则是Container的端口,我们通过第一红方式来发布一个sudodockerrun-d-p80:80--name="portbinding_apache2"我Host机器的地址为:07,我们通过另外一台windows机器来对其进行,在浏览器上输入怎么样,效果是不是出来了,者和Docker的Host机器是一个局域网中的不同、网络地址转借助于发布容器端口的方式,我们顺利的让Container被所,是不是很神奇呢?Docker实现这样无缝的连接,是借助于iptables这一个强大的Linux工具来完成得到我们发布在DockerHost机器上的HTTP服务、获取网络端DaemonContainer常好的方式,我们在本节中简单汇总一下,可以有哪些让我们得到运行的ContainerPs命令很好的列出了在启动运行该Containerinspect命第二种非常好的方式当然是使 令了,我们看一下运行结果的片段信portIP我之前的文章内容,但是使用者可以自己分配IP给一个Container么?答案是肯定的,你sudodockerrun-dsudodockerrun-d-p07:80:80DockerHost器有多个网卡,有多个合法的IP,我们就可以将某一个特定的指定给Docker的容器、自动生成Docker主机端由于Docker非常的轻量级,因此我们的每一台DockerHost不可能只运行一个HttpserverHttpServer,那么问题Containerlocal80显同样使用80端口肯定是行不通的,Docker提供了一种解决方案,自动生成端口并且绑定给Container,我们在本节中试验测试一下,大家还是看我的实验流程可以看到我的可以看到我的Host机器32768端口与Container的80端口发生了自动生成绑定关系,我们在外部的需要时了,虽然这种方式Docker提供给我们了,是我觉得没有那个人会傻到真的是用这种方式部署应用在生产环境中,虽然我个人在生产环境中并未使用过Docker,但是这种方式存在非常的不合理,在后文中我将会说一下我的看法.、EXPOSE命令在之前我们通过端口绑定的方式发布了我们的容器,并且外部的主机也能够正确顺利的访问,但是这些都发生在Container运行的过程中,一切看起来很正常,那是因为我们知道我们需要指派那些端口给我们的容器,如果我们使用的是第提供的镜像呢,也就是说我们此时并不知道我们的HTTPpahe使用的哪个端口,也许不是80端口呢?假设我们获得的的的dokerfie,并且增加了expose指令好了,第镜像已经制作成功,其交给了其他人,现在其他人并不知道我们的apache使用的是哪个端口,那这个时候怎么办呢?第一种最为愚笨的办法就是用该镜像运行一次产生一个Container,然后查找配置文件,并且找出端口来,这种方式当然可以满足我们 inspect,我们来看如何使用他找可以看到inspect4、总结&在本章中我们重点介绍了Doker能傻到如此的地步,给外部使用的用户,每次都生成一个随机的端口,肯定会有一些好的方案作为替代。第一:我们的所有服务部署到同一台物理机器上严重的不合理,因为物理机出现问题,所有的服务将会全军覆没,因此,如果我们如果有10台物理机器,因此部署10台HTTPServer的ontiner分别到10台机器,并且使用同样一个端口80.第二:一般我们为了高可用,在应用的前置,总会出现Hapoxy或者Ng

温馨提示

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

评论

0/150

提交评论