<div class="artical-content-bak main-content editor-side-new">
<div class="con editor-preview-side" id="result">
<h2 style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;line-height:1.1;color:rgb(51,51,51);font-size:16px;margin-left:5px;list-style:none;border-left:15px solid rgb(85,85,85);">Dockerfile 介绍</h2>
<p style="list-style:none;color:rgb(51,51,51);font-family:PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif;"><br></p>
<p style="list-style:none;color:rgb(51,51,51);font-family:PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif;text-indent:28.35pt;">Docker通过对于在Dockerfile中的一系列指令的顺序解析实现自动的image的构建。</p>
<p style="list-style:none;color:rgb(51,51,51);font-family:PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif;text-indent:28.35pt;">通过使用build命令,根据Dockerfile的描述来构建镜像。</p>
<p style="list-style:none;color:rgb(51,51,51);font-family:PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif;"><br></p>
<p><a style="background:rgb(255,255,255);color:rgb(79,124,206);font-family:PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif;"></a></p>
<h3 style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;line-height:1.1;color:rgb(51,51,51);font-size:14px;margin-left:12px;list-style:none;border-left:8px solid rgb(204,204,204);">Dockerfile指令</h3>
<p style="list-style:none;color:rgb(51,51,51);font-family:PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif;"><br></p>
<p style="list-style:none;color:rgb(51,51,51);font-family:PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif;text-indent:28.35pt;">只支持Docker自己定义的一套指令,不支持自定义</p>
<p style="list-style:none;color:rgb(51,51,51);font-family:PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif;text-indent:28.35pt;">大小写不敏感,但是建议全部使用大写</p>
<p style="list-style:none;color:rgb(51,51,51);font-family:PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif;text-indent:28.35pt;">根据Dockerfile的内容顺序执行</p>
<p style="list-style:none;color:rgb(51,51,51);font-family:PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif;text-indent:28.35pt;"><br></p>
<ul class="list-paddingleft-2" style="list-style-type:none;"><li><p><strong>FROM指令</strong></p></li></ul>
<p><span style="color:rgb(51,51,51);font-family:PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif;"></span></p>
<p style="list-style:none;text-indent:28.35pt;">FROM {base镜像}</p>
<p style="list-style:none;text-indent:28.35pt;">必须放在DOckerfile的第一行,表示从哪个baseimage开始构建</p>
<p style="list-style:none;text-indent:28.35pt;"><br></p>
<ul class="list-paddingleft-2" style="list-style-type:none;"><li><p><strong>MAINTAINER</strong></p><p style="list-style:none;text-indent:28.35pt;">MAINTAINER: xxx</p><p style="list-style:none;text-indent:28.35pt;">可选的,用来标识image作者的地方</p></li><li><p style="list-style:none;text-indent:28.35pt;"><strong>RUN</strong></p></li></ul>
<p style="list-style:none;text-indent:28.35pt;">每一个RUN指令都会是在一个新的container里面运行,并提交为一个image作为下一个RUN的base</p>
<p style="list-style:none;text-indent:28.35pt;">一个Dockerfile中可以包含多个RUN,按定义顺序执行</p>
<p style="list-style:none;text-indent:28.35pt;">RUN支持两种运行方式:</p>
<p style="list-style:none;text-indent:28.35pt;">RUN <cmd> 这个会当作/bin/sh -c “cmd” 运行</p>
<p style="list-style:none;text-indent:28.35pt;">RUN [“executable”,“arg1”,。。],Docker把他当作json的顺序来解析,因此必须使用双引号,而且executable需要是完整路径</p>
<p style="list-style:none;text-indent:28.35pt;"> </p>
<p style="list-style:none;text-indent:28.35pt;">RUN 都是启动一个容器、执行命令、然后提交存储层文件变更。第一层 RUN command1 的执行仅仅是当前进程,一个内存上的变化而已,其结果不会造成任何文件。而到第二层的时候,启动的是一个全新的容器,跟第一层的容器更完全没关系,自然不可能继承前一层构建过程中的内存变化。而如果需要 |
|