游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

详解Docker你需要知道的Docker进阶知识五

  Dockerfile
  Dockerfile是一个文本文件,其中包含了构建Docker镜像需要执行的命令序列。使用dockerbuild命令从Dockerfile中读取指令来构建镜像。上下文
  构建镜像时,该过程的第一件事是将Dockerfile文件所在目录下的所有内容发送给Docker守护进程。所以大多数情况下,最好创建一个新的目录,在其中保存Dockerfile,以及构建镜像所需的其它文件。Dockerfile文件所在目录也被称为构建上下文(context)。
  使用FROM指令指定一个基础镜像,后续指令将在此镜像基础上运行:FROMubuntu:14。04
  在Dockerfile中可以指定一个用户,后续的RUN,CMD以及ENTRYPOINT指令都会使用该用户身份去执行,该用户必须已存在。USERsoundhearer
  除了指定用户之外,还可以使用WORKDIR指定当前工作目录(CWD),RUN,CMD,COPY,ADD指令将在指定的工作目录中执行。WORKDIR
  RUN指令用于执行命令,该指令有两种形式:RUN,在shell中执行命令command,一般默认的shell为binsh。RUN〔executable,param1,param2,。。。〕,运行可执行程序executable,可以指定程序需要的命令行参数。
  例如我们执行更新命令:RUNaptgetupdate
  CMD的使用方式跟RUN类似,不过在一个Dockerfile文件中只能有一个CMD指令,如果有多个,则只有最后一个会生效。该指令指定了启动容器时要执行的命令,例如:CMDechohellosoundhearer
  可以在dockerrun时指定命令来覆盖默认的CMD命令,比如dockerrunimageechohelloshiyanlou。
  CMD指令还有一种特殊用法。在Dockerfile中,如果使用ENTRYPOINT指令指定了入口命令,则CMD指令的内容会作为ENTRYPOINT指令的参数:CMD〔param1,param2〕
  ENTRYPOINT指令会覆盖CMD指令作为容器运行时的默认指令,并且该指令不会被dockerrun时指定的指令覆盖,如下示例:FROMubuntu:latestENTRYPOINT〔ls,a〕CMD〔l〕
  上述文件构建出来的镜像,使用dockerrunimage等同于dockerrunimagelsal。使用dockerrunimageis等同于dockerrunimagelsais。即CMD指令的值会被当作ENTRYPOINT指令的参数附加到ENTRYPOINT指令的后面,只有CMD指令可以被覆盖。COPY和ADD
  COPY和ADD都用于将构建上下文中的文件,目录等复制到镜像中。使用方式如下:ADDsrc。。。destADD〔SRC,。。。dest〕COPYsrc。。。destCOPY〔src,。。。dest〕
  可以指定多个,但是其路径不能超出构建上下文范围,即必须在Dockerfile同级或子目录中。
  不需要预先存在,不存在时会自动创建,如果使用相对路径,则为相对于工作目录的路径。
  COPY和ADD的不同之处在于,ADD可以添加远程文件,并且可以是gzip或tar等格式的压缩文件,添加时会自动进行解压。ENV
  ENV指令用于设置环境变量:ENVkeyvalueENVkeyvaluekeyvalue。。。VOLUME
  VOLUME指令指定要创建的挂载路径,在容器运行时,将为每个挂载路径创建一个匿名卷并挂载上去:VOLUMEdata1data2
  上述指令将会在容器运行时,创建两个匿名卷,并分别挂载到容器中的data1和data2路径。EXPOSE
  EXPOSE用来暴露容器运行时会监听的端口,它只是一种声明,让外部能够知道容器内部的服务端口。可以在运行容器时通过p选项来绑定容器监听端口到宿主机端口,这些监听端口不一定需要通过EXPOSE暴露。当使用P(大写)选项时会自动绑定所有暴露出来的端口。EXPOSEport从Dockerfile创建镜像
  学习了上面这些常见的Dockerfile指令之后,可以使用这些指令来构建一个镜像。如下所示,构建一个提供ssh服务的镜像:cdDockerSerDockerfilecentossshviDockerfile生成的新镜像以centos镜像为基础FROMcentos指定作者信息MAINTAINERsoundhearer安装opensshserverRUNyumyinstallopensshserverRUNmkdirvarrunsshdRUNsshkeygentrsafetcsshsshhostrsakeyRUNsshkeygentdsafetcsshsshhostdsakey指定root密码RUNbinechoroot:123456chpasswdRUNbinsedis。session。required。pamloginuid。so。sessionoptionalpamloginuid。sogetcpam。dsshdRUNbinechoeLANGenUS。UTF8etcdefaultlocalEXPOSE22CMDusrsbinsshdD
  构建镜像〔rootVM017centosdockerfile〕dockerbuildt5588centosssh:v1。0。0。SendingbuildcontexttoDockerdaemon14。85kBStep111:FROMcentos470671670cacStep211:MAINTAINERsoundhearerRunningind5705e869a7eRemovingintermediatecontainerd5705e869a7e76f3b6fa1597Step311:RUNyumyinstallopensshserverRunningindcd4af79f6c1
  查看镜像〔rootVM017centosdockerfile〕dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZE5588centossshv1。0。0c16cedf7052c2minutesago278MB
  启动容器〔rootVM017centosdockerfile〕dockerrunitdp10022:22nametestcentos15588centosssh:v1。0。0ae638dff422529144e0066a98611a96ea51cd1469aa8007a503ed8b53ab62d22〔rootVM017centosdockerfile〕
  查看已经启动的容器〔rootVM017centosdockerfile〕dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESae638dff42255588centosssh:v1。0。0binshcusrsb51secondsagoUp50seconds0。0。0。0:1002222tcptestcentos1
  测试远程登录〔rootVM017centosdockerfile〕sshp10022127。0。0。1root127。0。0。1spassword:〔rootae638dff4225〕DockerComposeCompose
  Compose是运行由多个容器组成的Docker应用的工具,使用Compose可以一次启动一组有关联的服务,每个服务由来自同一镜像的单个或多个容器组成。Service
  在复杂应用中,应用一般由多个服务(service)组成,例如一个网站后台通常包含Web服务、数据库服务、缓存服务、消息队列服务等。使用步骤
  使用Compose的步骤如下:定义和构建组成应用的各个服务的镜像,主要是编写各个服务的Dockerfile文件定义应用服务描述文件,主要是编写dockercompose。yml文件启动应用
  关于dockercompose。yml文件的详细格式可以参考官方文档。
  目前有三种版本的Compose文件格式:version1:最早的版本使用传统格式,将在未来弃用version2:现在使用最多的文件格式version3:最新版本,旨在使得Compose和已被集成到DockerEngine中的swarmmode互相兼容。安装
  下载dockercomposeLinuxx8664
  下载成功后,为了方便使用,可以将其添加到PATH路径下sudomvdockercomposeLinuxx8664usrlocalbindockercompossudochmodxusrlocalbindockercompose
  执行完成后,就能够在终端下直接使用dockercompose命令了:〔rootVM017centosdockerfile〕dockercomposehelpDefineandrunmulticontainerapplicationswithDocker。Usage:dockercompose〔f。。。〕〔options〕〔COMMAND〕〔ARGS。。。〕dockercomposehhelp实例
  接下来我们将创建一个Web应用,该应用包含两个容器:web容器:提供web服务,该服务需要连接后端的redis服务redis容器:提供redis服务
  项目目录结构如下:appwebweb。pyrequirements。txtDockerfiledockercompose。yml
  首先编辑appwebweb。py文件,写入下面的内容:fromflaskimportFlaskfromredisimportRedisappFlask(name)redisRedis(hostredis,port6379)app。route()defhello():redis。incr(number)returnHelloDocker!sredis。get(number)ifnamemain:app。run(host0。0。0。0,port80,debugTrue)
  上述代码创建了一个简单的Web应用。该应用会连接redis服务,在访问页面时,自动将变量number加1。
  编辑appwebrequirements。txt文件,输入如下内容:flask0。10redis2。10。3
  requirements。txt文件存放了Web应用依赖的第三方库包的名称和版本信息。
  编辑appwebDockerfile文件,添加如下内容FROMpython:2。7COPY。webWORKDIRwebRUNpipinstallrrequirements。txtCMDpythonweb。py
  上述Dockerfile定义了Web应用镜像,该镜像基于python:2。7基础镜像,在其基础上安装了应用依赖的库包,并通过CMD指令指定了应用的启动命令。
  编辑appdockercompose。yml文件:services:redis:image:redis:3。2web:build:context:homeshiyanlouappwebdependson:redisports:8001:80tcpvolumes:homeshiyanlouappweb:web:rwversion:3。0
  该dockercompose。yml文件定义了两个服务,分别为web和redis服务,并且配置了web服务的端口映射和挂载目录。dependson定义了依赖关系,被依赖的服会先启动。
  进入app目录,执行dockercomposeup命令来启动应用:〔rootVM017centosapp〕dockercomposeupBuildingwebStep15:FROMpython:2。7fbc983cb5352Step25:COPY。web10bdacc94674Step35:WORKDIRwebRunningin7ff982241c92Removingintermediatecontainer7ff982241c920a37af3e9713Step45:RUNpipinstallrrequirements。txtRunningin9832ab0165d1DEPRECATION:Python2。7reachedtheendofitslifeonJanuary1st,2020。PleaseupgradeyourPythonasPython2。7isnolongermaintained。AfutureversionofpipwilldropsupportforPython2。7。MoredetailsaboutPython2supportinpip,canbefoundathttps:pip。pypa。ioenlatestdevelopmentreleaseprocesspython2supportCollectingflask0。10DownloadingFlask0。10。tar。gz(544kB)Collectingredis2。10。3Downloadingredis2。10。3。tar。gz(86kB)CollectingWerkzeug0。7DownloadingWerkzeug1。0。0py2。py3noneany。whl(298kB)CollectingJinja22。4DownloadingJinja22。11。1py2。py3noneany。whl(126kB)Collectingitsdangerous0。21Downloadingitsdangerous1。1。0py2。py3noneany。whl(16kB)CollectingMarkupSafe0。23DownloadingMarkupSafe1。1。1cp27cp27mumanylinux1x8664。whl(24kB)Buildingwheelsforcollectedpackages:flask,redisBuildingwheelforflask(setup。py):startedBuildingwheelforflask(setup。py):finishedwithstatusdoneCreatedwheelforflask:filenameFlask0。10py2noneany。whlsize115528sha256967ce1269d455054b3713a87985eeceda84b437ff0c2d0ba8855bb813daf9c10Storedindirectory:root。cachepipwheels75152cb14930624e0a52fdd754537b216da52d96b79dd5d14966abb7Buildingwheelforredis(setup。py):startedBuildingwheelforredis(setup。py):finishedwithstatusdoneCreatedwheelforredis:filenameredis2。10。3py2noneany。whlsize50695sha2569741ffb0196e0dc9d1818811a48f206aff9c53699dfe822e1b0f9591f72db9e8Storedindirectory:root。cachepipwheels12ce011aba4866d936f9a08aeb59a573b188c17daea0da2537c68deaSuccessfullybuiltflaskredisInstallingcollectedpackages:Werkzeug,MarkupSafe,Jinja2,itsdangerous,flask,redisSuccessfullyinstalledJinja22。11。1MarkupSafe1。1。1Werkzeug1。0。0flask0。10itsdangerous1。1。0redis2。10。3Removingintermediatecontainer9832ab0165d1f12bc5dc1aacStep55:CMDpythonweb。pyRunninginaec73ed63ab6Removingintermediatecontaineraec73ed63ab6228792f96283Successfullybuilt228792f96283Successfullytaggedappweb:latestWARNING:Imageforservicewebwasbuiltbecauseitdidnotalreadyexist。TorebuildthisimageyoumustusedockercomposebuildCreatingappredis1。。。doneCreatingappredis1。。。Creatingappweb1。。。doneAttachingtoappredis1,appweb1redis11:C14Mar13:54:22。030Warning:noconfigfilespecified,usingthedefaultconfig。Inordertospecifyaconfigfileuseredisserverpathtoredis。confredis1。redis1。。redis1。。。。Redis3。2。12(000000000)64bitredis1。。。。,。redis1(,。,)Runninginstandalonemoderedis1。。。。。。。。。。Port:6379redis1。。。PID:1redis1。。。。。redis1。。。。。。redis1。。。。http:redis。ioredis1。。。。。。redis1。。。。。。redis1。。。。redis1。。。。。。redis1。。。。redis1。。redis1。。redis1redis11:M14Mar13:54:22。033WARNING:TheTCPbacklogsettingof511cannotbeenforcedbecauseprocsysnetcoresomaxconnissettothelowervalueof128。redis11:M14Mar13:54:22。033Serverstarted,Redisversion3。2。12redis11:M14Mar13:54:22。033WARNINGovercommitmemoryissetto0!Backgroundsavemayfailunderlowmemorycondition。Tofixthisissueaddvm。overcommitmemory1toetcsysctl。confandthenrebootorrunthecommandsysctlvm。overcommitmemory1forthistotakeeffect。redis11:M14Mar13:54:22。033WARNINGyouhaveTransparentHugePages(THP)supportenabledinyourkernel。ThiswillcreatelatencyandmemoryusageissueswithRedis。Tofixthisissuerunthecommandechoneversyskernelmmtransparenthugepageenabledasroot,andaddittoyouretcrc。localinordertoretainthesettingafterareboot。RedismustberestartedafterTHPisdisabled。redis11:M14Mar13:54:22。033Theserverisnowreadytoacceptconnectionsonport6379web1Runningonhttp:0。0。0。0:80(PressCTRLCtoquit)web1Restartingwithstatweb1Debuggerisactive!web1DebuggerPIN:764159950web1116。30。196。114〔14Mar202013:58:04〕GETHTTP1。1200web1116。30。196。114〔14Mar202013:58:05〕GETfavicon。icoHTTP1。1404web1Detectedchangeinwebweb。py,reloadingweb1Restartingwithstatweb1Debuggerisactive!web1DebuggerPIN:764159950
  启动成功后,就可以打开网址127。0。0。1:8001来访问Web应用了。
  另外一些命令:后台运行应用:dockercomposeupd查看容器dockercomposeps查看镜像dockercomposeimages停止并删除应用,相关容器也会一并删除dockercomposedown

熵增和熵减的看法好的习惯养成时,就是一个熵减的过程,这个过程漫长而且痛苦,需要毅力去坚持,在这个过程当中,会发生一系列连锁反应,比如你平时经常重复做的事情,当你发现做这个事情对自己不太好,不助……详解Docker你需要知道的Docker进阶知识五DockerfileDockerfile是一个文本文件,其中包含了构建Docker镜像需要执行的命令序列。使用dockerbuild命令从Dockerfile中读取指令来……华为手机好用还是苹果手机好用,求各位吃鸡的高手来分享一下,谢我不否认苹果手机不好,毕竟苹果做智能手机的时间十多年了,华为才几年!我不是买不起苹果,我2007年就花2万8千多买第一个三星高端手机,到2017年这十年间也是每年都买一部最高端……我用5G网络可以干什么?有人说有4G就可以了不需要5G,甚至言下之意连4G都不需要,这个说法其实站不住脚。这么说的主要依据不过是3G4G刚出来的时候飞快,却完全不明白3G4G的在初期体验的快是以……声声入耳小米OLED电视联姻哈曼卡顿昨天晚上,小米第二代OLED电视正式发布,其宣布联合哈曼卡顿优化音质。现在显示设备和音频厂商的联合越来越常见,极米的智能投影也是和哈曼卡顿合作,在诸如H3S以及激光电视产……助力元宇宙虚实相生脑机接口从科幻走向现实道阻且长本报记者李冰见习记者余俊毅张博日前,埃隆马斯克的Neuralink公司宣布其脑机接口预计将在2022年之前植入人体,把大脑的数据读出来,把外部世界的数据送进去。之前……以太坊伦敦升级!欧科云链链上大师上线EIP1559专题数据把8月5日,以太坊主网伦敦硬分叉升级,在区块链高度12,965,000正式激活,以太坊EIP1559提案随之生效。从2019年3月被提出,EIP1559提案便引发以太坊社区……击穿行业底价!联想重燃价格战,其他厂商还撑得住吗?反正不论他怎样打价格战,我也不会买联想了!只买华为!这是一场恶意的价格战,让其它商厂无路可走,以垄断市场,损人利已,和前些日子一些头部企业直接砸钱把手伸进菜蓝子,最终坑的……现在还有执着于BT下载高清电影的吗?为什么没有呢?在线播放虽然非常多,但是最大的受限是画质,其次是流畅度,然后就是影片内容,主流的几大在线播放应用,很多类型的影片都会某些画面被阉割,其次也会考虑片源是否适合……5个超级棒的小众软件今天和大家分享5个超级棒的小众软件,一起来看看吧!泰尔网测泰尔网测是信通院推出的一款网络测试工具app。它功能特别的全面和强大,它有全国各地不同运营商的服务器。可以……路由器的2。5和5g模式有啥区别?路由器的2。5和5g模式有啥区别?路由器没有2。5G模式,而是2。4G和5G两种模式。现在的路由器多数都是双频路由器,所说的双频路由器就是一个频段是2。4GHz的,……vivox20plus是不是现在国产手机中的最高最好配置呢?vivoX20Plus并不是现在国产手机中的最高最好配置,不知道题主为什么会何处此言?貌似没有人这么评价这款手机吧,而且vivo官方在宣传的时候也从来没有说过类似的话。在……
手机电量扛不住用?自己检查解决,能省掉好几百随着大家使用手机的频率越来越高,常常面临手机电量掉得飞快、充电过快或过慢、手机发烫严重等问题。那什么时候是不需要换电池,自己操作解决,什么时候才是电池老化,需要更换呢?……风味人间3大海小鲜致敬大海观众原来真实的赶海是这样的《风味人间3大海小鲜》自开播以来,引起了全国观众对海鲜的讨论。无论是鲜味四溢的美食烹饪,还是赶海捕捞的传统技法,使观众大呼过瘾的同时,也感叹我国海鲜美食文化的博大精深。有观众感……电视剧尽余生启动仪式暨星幕影视开业盛典在山东举行1月8日,大型都市职场情感剧《尽余生》启动仪式暨星幕影视开业盛典在山东隆重举行。一带一路电影共享计划发起人、资深投资人、出品人、最幕集团董事长李强,著名导演武洪武,制片人徐献锋……陈若轩主演电视剧冰雪之名杀青挑战花滑运动员演绎热血青春12月25日,由陈若轩、彭小苒等主演的电视剧《冰雪之名》,历时两个多月的拍摄,迎来了正式杀青。该剧由北京冬奥组委支持、国家广播电视总局、北京市委宣传部、吉林省委宣传部、四川省委……沈浩金涛警官上线口碑好剧女心理师再迎新支线改编自毕淑敏同名小说的电视剧《女心理师》目前正在热播中,每周三至周四更新两集,优酷视频全网独播,播当日就冲上灯塔榜首。2007年,毕淑敏出版了长篇小说《女心理师》,而剧集做出了……都市医疗爱情剧听说你喜欢我杀青时空重启唤爱治愈由耀客传媒、火花传媒出品,杨阳导演,王婕、张楚妤编剧,徐速担任剧本总监,张萌任制片人,彭冠英、王楚然、啜妮、刘芮麟领衔主演,毛林林特别出演,李子峰、朱俊麟、田雷主演的都市医疗爱……半暖时光热播杨旭文摧心演技引情感共振由金晔执导,杨旭文、许龄月领衔主演的都市青春剧《半暖时光》目前正在江苏卫视幸福剧场以及优酷视频热播。在本周剧情中,由杨旭文饰演的沈侯为爱失意,孤身离开,落寞背影令观众唏嘘不已。……中小企业为什么要选择企业宽带而不是个人宽带?作为企业的IT管理者,如何降低企业成本是每个管理者无时无刻不在思考的问题,但实时流媒体、VOIP以及云应用等让网络不堪重负,也让每个企业员工的工作效率变得缓慢异常,商业客户在宽……祝卿好官宣开机袁冰妍郑业成首次合作CP感十足由爱奇艺出品,坦当文化联合出品,爱撒糖工作室制作,改编自晋江文学城伊人睽睽原著小说《我的锦衣卫大人》的古装爱情剧《祝卿好》于2021年3月11日在横店顺利开机。该剧的主创团队由……郑业成古装新剧祝卿好开机飞鱼服造型首曝打戏高能3月11日,由爱奇艺出品,坦当文化联合出品,爱撒糖工作室制作,邵文依担任总制片人,导演朱少杰执导,郑业成领衔主演的古装爱情剧《祝卿好》在横店开机。郑业成在剧中饰演容貌出众,武功……郑业成主演三千鸦杀热播宝藏男孩戏里戏外过得通透星关系3月31日讯在《三千鸦杀》上周的剧情中,郑业成饰演的傅九云不光贡献了深情浪漫的山顶告白,更有糖度爆表的澡堂吻不负按头党们期待,甜蜜升级。九云大人的撩人沐浴、性感锁骨杀,配……郑业成饰顾逢恩离别场面催泪人物海报曝形象转变挑战演技星关系12月11日讯12月10日,由演员郑业成饰演的顾逢恩刚刚在前一晚的影视剧《鹤唳华亭》最新剧集中迎来感人的离别戏份,即先后参与两场新浪直播活动及《鹤唳华亭》中国人民大学主创……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网