mirror of
https://github.com/jaywcjlove/reference.git
synced 2025-06-19 13:41:21 +08:00
doc: Update docker.md
dockerfile
cheatsheet. f7f71e5070
This commit is contained in:
@ -409,6 +409,7 @@
|
||||
<ul>
|
||||
<li><a href="./dockerfile.html">Dockerfile 备忘清单</a> <em>(github.io)</em></li>
|
||||
<li><a href="https://docs.docker.com/get-started/">Docker 官方入门教程</a> <em>(docker.com)</em></li>
|
||||
<li><a href="https://jaywcjlove.github.io/docker-tutorial">Docker入门学习笔记</a> <em>(github.io)</em></li>
|
||||
</ul>
|
||||
|
||||
</div></div></div></div></div><footer class="footer-wrap"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
|
||||
|
@ -52,7 +52,7 @@
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">FROM</span> ruby:2.2.2</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token instruction"><span class="token keyword">FROM</span> golang:1.19-alpine3.16 <span class="token keyword">AS</span> build-env</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="变量"><a aria-hidden="true" tabindex="-1" href="#变量"><span class="icon icon-link"></span></a>变量</h3><div class="wrap-body">
|
||||
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="变量-env"><a aria-hidden="true" tabindex="-1" href="#变量-env"><span class="icon icon-link"></span></a>变量 ENV</h3><div class="wrap-body">
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">ENV</span> <key>=<value> ...</span>
|
||||
</span></code></pre>
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">ENV</span> APP_HOME /myapp</span>
|
||||
@ -64,32 +64,61 @@
|
||||
</div></div></div><div class="wrap row-span-2"><div class="wrap-header h3wrap"><h3 id="初始化"><a aria-hidden="true" tabindex="-1" href="#初始化"><span class="icon icon-link"></span></a>初始化</h3><div class="wrap-body"><!--rehype:wrap-class=row-span-2 -->
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">RUN</span> bundle install</span>
|
||||
</span></code></pre>
|
||||
<p><code>WORKDIR</code> 指令为任何 <code>RUN</code>、<code>CMD</code>、<code>ENTRYPOINT</code>、<code>COPY</code> 和 <code>ADD</code> 指令设置工作目录。</p>
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">WORKDIR</span> /myapp</span>
|
||||
</span></code></pre>
|
||||
<p><code>VOLUME</code> 指令创建一个具有指定名称的挂载点,并将其标记为保存来自本机主机或其他容器的外部挂载卷。</p>
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">VOLUME</span> [<span class="token string">"/data"</span>]</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment"># 安装点规范</span>
|
||||
</span></code></pre>
|
||||
<pre class="wrap-text "><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">ADD</span> file.xyz /file.xyz</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token instruction"><span class="token keyword">COPY</span> <span class="token options"><span class="token property">--chown</span><span class="token punctuation">=</span><span class="token string">user:group</span></span> host_file.xyz /path/container_file.xyz</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment"># 复制</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token instruction"><span class="token keyword">COPY</span> <span class="token options"><span class="token property">--chown</span><span class="token punctuation">=</span><span class="token string">user:group</span></span> host_file.xyz /path/container_file.xyz</span>
|
||||
</span></code></pre><!--rehype:className=wrap-text -->
|
||||
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="onbuild"><a aria-hidden="true" tabindex="-1" href="#onbuild"><span class="icon icon-link"></span></a>Onbuild</h3><div class="wrap-body">
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">ONBUILD</span> <span class="token keyword">RUN</span> bundle install</span>
|
||||
<pre class="wrap-text "><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">ONBUILD</span> <span class="token keyword">RUN</span> bundle install</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment"># 与另一个文件一起使用时</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="命令"><a aria-hidden="true" tabindex="-1" href="#命令"><span class="icon icon-link"></span></a>命令</h3><div class="wrap-body">
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">EXPOSE</span> 5900</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token instruction"><span class="token keyword">CMD</span> [<span class="token string">"bundle"</span>, <span class="token string">"exec"</span>, <span class="token string">"rails"</span>, <span class="token string">"server"</span>]</span>
|
||||
</span></code></pre>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"><span class="token instruction"><span class="token keyword">ONBUILD</span> <span class="token keyword">ADD</span> . /app/src</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token instruction"><span class="token keyword">ONBUILD</span> <span class="token keyword">RUN</span> /usr/local/bin/python-build --dir /app/src</span>
|
||||
</span></code></pre><!--rehype:className=wrap-text -->
|
||||
<p>指令将触发指令添加到镜像中,以便稍后执行,此时镜像用作另一个构建的基础。</p>
|
||||
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="在严格的-shell-中运行命令"><a aria-hidden="true" tabindex="-1" href="#在严格的-shell-中运行命令"><span class="icon icon-link"></span></a>在严格的 shell 中运行命令</h3><div class="wrap-body">
|
||||
<pre class="wrap-text "><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">ENV</span> my_var</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token instruction"><span class="token keyword">SHELL</span> [<span class="token string">"/bin/bash"</span>, <span class="token string">"-euo"</span>, <span class="token string">"pipefail"</span>, <span class="token string">"-c"</span>]</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment"># With strict mode:</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment"># 使用严格模式:</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token instruction"><span class="token keyword">RUN</span> false # ails 像使用 && 一样构建</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token instruction"><span class="token keyword">RUN</span> echo <span class="token string">"$myvar"</span> # 由于拼写错误会抛出错误</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token instruction"><span class="token keyword">RUN</span> true | false # 将脱离管道</span>
|
||||
</span></code></pre><!--rehype:className=wrap-text -->
|
||||
<p>使用 <code>shell</code> 将为 shell 命令打开严格模式。</p>
|
||||
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="入口点"><a aria-hidden="true" tabindex="-1" href="#入口点"><span class="icon icon-link"></span></a>入口点</h3><div class="wrap-body">
|
||||
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3 id="命令-cmd"><a aria-hidden="true" tabindex="-1" href="#命令-cmd"><span class="icon icon-link"></span></a>命令 CMD</h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2-->
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th align="left">:-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="left"><code>CMD ["executable","param1","param2"]</code></td>
|
||||
<td>(exec 形式,这是首选形式)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>CMD ["param1","param2"]</code></td>
|
||||
<td>(作为 ENTRYPOINT 的默认参数)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>CMD command param1 param2</code></td>
|
||||
<td>(shell形式)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">EXPOSE</span> 5900</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token instruction"><span class="token keyword">CMD</span> [<span class="token string">"bundle"</span>, <span class="token string">"exec"</span>, <span class="token string">"rails"</span>, <span class="token string">"server"</span>]</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="入口点-entrypoint"><a aria-hidden="true" tabindex="-1" href="#入口点-entrypoint"><span class="icon icon-link"></span></a>入口点 ENTRYPOINT</h3><div class="wrap-body">
|
||||
<pre class="wrap-text "><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">ENTRYPOINT</span> [<span class="token string">"executable"</span>, <span class="token string">"param1"</span>, <span class="token string">"param2"</span>]</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token instruction"><span class="token keyword">ENTRYPOINT</span> command param1 param2</span>
|
||||
</span></code></pre><!--rehype:className=wrap-text -->
|
||||
@ -97,7 +126,7 @@
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">ENTRYPOINT</span> exec top -b</span>
|
||||
</span></code></pre>
|
||||
<p>这将使用 shell 处理来替换 shell 变量,并将忽略任何 <code>CMD</code> 或 <code>docker run</code> 命令行参数。</p>
|
||||
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="元数据"><a aria-hidden="true" tabindex="-1" href="#元数据"><span class="icon icon-link"></span></a>元数据</h3><div class="wrap-body">
|
||||
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="元数据-label"><a aria-hidden="true" tabindex="-1" href="#元数据-label"><span class="icon icon-link"></span></a>元数据 LABEL</h3><div class="wrap-body">
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">LABEL</span> version=<span class="token string">"1.0"</span></span>
|
||||
</span></code></pre>
|
||||
<pre class="wrap-text "><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">LABEL</span> <span class="token string">"com.example.vendor"</span>=<span class="token string">"ACME Incorporated"</span></span>
|
||||
@ -110,6 +139,49 @@
|
||||
</span></span><span class="code-line line-number" line="4"><span class="token instruction"> multi.label2=<span class="token string">"value2"</span> <span class="token operator">\</span>
|
||||
</span></span><span class="code-line line-number" line="5"><span class="token instruction"> other=<span class="token string">"value3"</span></span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="arg"><a aria-hidden="true" tabindex="-1" href="#arg"><span class="icon icon-link"></span></a>ARG</h3><div class="wrap-body">
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">ARG</span> <name>[=<default value>]</span>
|
||||
</span></code></pre>
|
||||
<p>指令定义了一个变量,在构建时通过 <code>docker build</code> 命令使用 --build-arg <code><varname>=<value></code> 标志将其传递给构建器。</p>
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">FROM</span> busybox</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment"># user1 默认值为 someuser</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token instruction"><span class="token keyword">ARG</span> user1=someuser</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token instruction"><span class="token keyword">ARG</span> buildno=1</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="dockerignore-文件"><a aria-hidden="true" tabindex="-1" href="#dockerignore-文件"><span class="icon icon-link"></span></a>.dockerignore 文件</h3><div class="wrap-body">
|
||||
<pre class="language-ignore"><code class="language-ignore code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># 注释说明</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token entry string"><span class="token operator">*</span><span class="token punctuation">/</span>temp<span class="token operator">*</span></span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token entry string"><span class="token operator">*</span><span class="token punctuation">/</span><span class="token operator">*</span><span class="token punctuation">/</span>temp<span class="token operator">*</span></span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token entry string">temp<span class="token operator">?</span></span>
|
||||
</span></code></pre>
|
||||
<hr>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th align="left">:-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="left"><code># comment</code></td>
|
||||
<td>忽略</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>*/temp*</code></td>
|
||||
<td>在根的任何直接子目录中<br>排除名称以 <code>temp</code> 开头的文件和目录</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>*/*/temp*</code></td>
|
||||
<td>从根以下两级的任何子目录中<br>排除以 <code>temp</code> 开头的文件和目录</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>temp?</code></td>
|
||||
<td>排除根目录中名称为<br><code>temp</code> 的单字符扩展名的文件和目录</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>如果此文件存在,排除与其中的模式匹配的文件和目录,有利于避免 <code>ADD</code> 或 <code>COPY</code> 将敏感文件添加到镜像中。匹配是使用 Go 的 <a href="https://golang.org/pkg/path/filepath#Match">filepath.Match</a> 规则完成的。</p>
|
||||
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3 id="主要命令"><a aria-hidden="true" tabindex="-1" href="#主要命令"><span class="icon icon-link"></span></a>主要命令</h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 -->
|
||||
<table>
|
||||
<thead>
|
||||
@ -161,7 +233,7 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div><div class="wrap col-span-3"><div class="wrap-header h3wrap"><h3 id="服务静态网站的最小-docker-镜像"><a aria-hidden="true" tabindex="-1" href="#服务静态网站的最小-docker-镜像"><span class="icon icon-link"></span></a>服务静态网站的最小 Docker 镜像</h3><div class="wrap-body"><!--rehype:wrap-class=col-span-3-->
|
||||
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3 id="服务静态网站的最小-docker-镜像"><a aria-hidden="true" tabindex="-1" href="#服务静态网站的最小-docker-镜像"><span class="icon icon-link"></span></a>服务静态网站的最小 Docker 镜像</h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2-->
|
||||
<pre class="language-dockerfile"><code class="language-dockerfile code-highlight"><span class="code-line line-number" line="1"><span class="token instruction"><span class="token keyword">FROM</span> lipanski/docker-static-website:latest</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment"># 使用 .dockerignore 文件来控制图像中的内容!</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment"># 复制当前目录内容,到容器中</span>
|
||||
@ -178,6 +250,7 @@
|
||||
<ul>
|
||||
<li><a href="https://docs.docker.com/engine/reference/builder/">Dockerfile reference</a> <em>(docker.com)</em></li>
|
||||
<li><a href="./docker.html">Docker 备忘清单</a> <em>(github.io)</em></li>
|
||||
<li><a href="https://jaywcjlove.github.io/docker-tutorial">Docker入门学习笔记</a> <em>(github.io)</em></li>
|
||||
</ul>
|
||||
|
||||
</div></div></div></div></div><footer class="footer-wrap"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
|
||||
|
@ -61,9 +61,9 @@
|
||||
<path fill="currentColor" d="M57.528 0v28.764H31.64v198.472h25.888V256H0V0z"></path>
|
||||
</svg>
|
||||
<span>TOML</span></a><!--rehype:style=background: rgb(132 132 132/var(\-\-bg\-opacity));-->
|
||||
<a href="./docs/markdown.html" style="background: rgb(78 57 104/var(\-\-bg\-opacity));"><svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 16 16" height="1em" width="1em">
|
||||
<a href="./docs/markdown.html" style="background: rgb(103 61 156/var(\-\-bg\-opacity));"><svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 16 16" height="1em" width="1em">
|
||||
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm11.5 1a.5.5 0 0 0-.5.5v3.793L9.854 8.146a.5.5 0 1 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L12 9.293V5.5a.5.5 0 0 0-.5-.5zM3.56 7.01h.056l1.428 3.239h.774l1.42-3.24h.056V11h1.073V5.001h-1.2l-1.71 3.894h-.039l-1.71-3.894H2.5V11h1.06V7.01z"></path>
|
||||
</svg><span>Markdown</span></a><!--rehype:style=background: rgb(78 57 104/var(\-\-bg\-opacity));-->
|
||||
</svg><span>Markdown</span></a><!--rehype:style=background: rgb(103 61 156/var(\-\-bg\-opacity));-->
|
||||
<a href="./docs/typescript.html" style="background: rgb(49 120 198/var(\-\-bg\-opacity));"><svg fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" height="1em" width="1em">
|
||||
<path d="M1 7v6h12V1H1v6zm7.36-.21v.538H6.811v4.922H5.547V7.328H4V6.25h4.36v.54zm3.046-.474c.192.037.408.089.483.117l.127.051v.586c0 .324-.01.586-.02.586-.009 0-.107-.051-.22-.112-.421-.24-1.096-.328-1.509-.207a.894.894 0 0 0-.319.193c-.112.108-.135.173-.135.347 0 .187.023.239.178.384.098.094.464.31.82.487.75.37 1.13.685 1.303 1.074.155.347.16 1.078.01 1.406-.141.31-.45.624-.755.769-.647.305-1.702.333-2.527.06l-.295-.098v-1.303l.234.169c.305.22.699.356 1.111.384.413.029.717-.047.905-.225.117-.107.14-.168.14-.346 0-.343-.196-.52-1.003-.915-.712-.351-.937-.51-1.148-.82-.469-.68-.328-1.72.3-2.194.534-.407 1.42-.557 2.32-.393Z"></path>
|
||||
</svg>
|
||||
|
Reference in New Issue
Block a user