doc: Update docs/docker-compose.md (#997)

* docker compose 版本的变化,添加实用命令

* 调整显示

* 命令调整 7056d441a6
This commit is contained in:
jaywcjlove
2025-08-13 14:21:46 +00:00
parent a82cc1b66d
commit 88bfebecb4
5 changed files with 195 additions and 158 deletions

View File

@@ -41,7 +41,7 @@
<p>这是 <a href="https://docs.docker.com/compose/">docker-compose</a> 的快速参考备忘单。你可以在这里找到最常见的 Docker Compose 使用方式。</p>
</div></header><div class="menu-tocs"><div class="menu-btn"><svg aria-hidden="true" fill="currentColor" height="1em" width="1em" viewBox="0 0 16 16" version="1.1" data-view-component="true">
<path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path>
</svg></div><div class="menu-modal"><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#入门">入门</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#docker-compose-是什么">Docker Compose 是什么?</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#基本概念">基本概念</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#docker-compose-文件结构">Docker-Compose 文件结构</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#安装">安装</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#独立安装-compose">独立安装 Compose</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#更新-compose">更新 Compose</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#卸载-docker-compose">卸载 Docker Compose</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#检查-compose-的安装位置">检查 Compose 的安装位置</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#常用命令">常用命令</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#常用运维命令">常用运维命令</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#docker-compose-配置">Docker Compose 配置</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#示例配置文件">示例配置文件</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#使用环境变量">使用环境变量</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#额外的信息">额外的信息</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#image">image</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#ports-端口">ports 端口</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#platform-平台">platform 平台</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#command">command</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#depends_on">depends_on</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#volumes">volumes</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#driver">driver</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#driver_opts">driver_opts</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#external">external</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#labels">labels</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#name">name</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#networks">networks</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#aliases">aliases</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#ipv4_address-ipv6_address">ipv4_address, ipv6_address</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#link_local_ips">link_local_ips</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#mac_address">mac_address</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#priority-优先级">priority 优先级</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#expose">expose</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#links">links</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#pids_limit">pids_limit</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#devices">devices</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#dns">dns</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#dns_opt">dns_opt</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#dns_search">dns_search</a></div></div><div class="h1wrap-body"><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="入门"><a aria-hidden="true" tabindex="-1" href="#入门"><span class="icon icon-link"></span></a>入门</h2><div class="wrap-body">
</svg></div><div class="menu-modal"><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#入门">入门</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#docker-compose-是什么">Docker Compose 是什么?</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#基本概念">基本概念</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#docker-compose-文件结构">Docker-Compose 文件结构</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#安装">安装</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#独立安装-compose">独立安装 Compose</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#更新-compose">更新 Compose</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#卸载-docker-compose">卸载 Docker Compose</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#检查-compose-的安装位置">检查 Compose 的安装位置</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#常用命令">常用命令</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#常用运维命令">常用运维命令</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#其他命令">其他命令</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#docker-compose-配置">Docker Compose 配置</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#示例配置文件">示例配置文件</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#使用环境变量">使用环境变量</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#额外的信息">额外的信息</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#image">image</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#ports-端口">ports 端口</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#platform-平台">platform 平台</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#command">command</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#depends_on">depends_on</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#volumes">volumes</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#driver">driver</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#driver_opts">driver_opts</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#external">external</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#labels">labels</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#name">name</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#networks">networks</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#aliases">aliases</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#ipv4_address-ipv6_address">ipv4_address, ipv6_address</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#link_local_ips">link_local_ips</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#mac_address">mac_address</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#priority-优先级">priority 优先级</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#expose">expose</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#links">links</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#pids_limit">pids_limit</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#devices">devices</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#dns">dns</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#dns_opt">dns_opt</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#dns_search">dns_search</a></div></div><div class="h1wrap-body"><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="入门"><a aria-hidden="true" tabindex="-1" href="#入门"><span class="icon icon-link"></span></a>入门</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="docker-compose-是什么"><a aria-hidden="true" tabindex="-1" href="#docker-compose-是什么"><span class="icon icon-link"></span></a>Docker Compose 是什么?</h3><div class="wrap-body">
<ul>
<li><code>Docker-compsoe</code> 是一个开源项目,用于定义和运行多容器 <code>Docker</code> 应用程序的工具。由 <code>Docker</code> 社区维护。</li>
@@ -65,6 +65,10 @@
</ul>
</div></div></div><div class="wrap h3body-not-exist 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-->
<p>Docker 20.10 之后Docker CLI 支持 插件机制。Compose 也被官方迁移为 CLI 插件。</p>
<p>命令也尽量使用官方推荐的 <code>docker compose</code> (<strong>中间用空格,没有横线</strong>)。建议尽早迁移,如果旧项目需要兼容 <code>docker-compose</code>,可单独安装 <code>docker-compose-plugin</code> 插件,或者是用软链接。</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token function">sudo</span> <span class="token function">ln</span> <span class="token parameter variable">-s</span> /usr/lib/docker/cli-plugins/docker-compose /usr/local/bin/docker-compose
</span></code></pre>
<p>对于 Ubuntu 和 Debian运行</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token function">sudo</span> <span class="token function">apt-get</span> update
</span><span class="code-line"><span class="token function">sudo</span> <span class="token function">apt-get</span> <span class="token function">install</span> docker-compose-plugin
@@ -222,10 +226,41 @@
<table class="left-align"><thead><tr><th>docker compose命令</th><th>说明</th></tr></thead><tbody><tr><td><code>docker compose stop</code></td><td>停止容器</td></tr><tr><td><code>docker compose start</code></td><td>启动容器</td></tr><tr><td><code>docker compose rm</code></td><td>删除容器</td></tr><tr><td><code>docker compose restart</code></td><td>重启容器</td></tr><tr><td><code>docker compose run</code></td><td>运行一个临时容器</td></tr><tr><td><code>docker compose ps</code></td><td>查看容器状态</td></tr></tbody></table>
<!--rehype:className=left-align-->
</div></div></div><div class="wrap h3body-not-exist col-span-3"><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-3-->
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token function">docker</span> compose up <span class="token parameter variable">-d</span> --remove-orphans <span class="token parameter variable">--pull</span> always --force-recreate
</span></code></pre>
<table class="left-align"><thead><tr><th>参数</th><th>说明</th></tr></thead><tbody><tr><td>-d / --detach</td><td>后台运行容器。</td></tr><tr><td>--remove-orphans</td><td>删除孤儿容器和网络配置。</td></tr><tr><td>--pull always</td><td>每次启动前都从远程仓库拉取最新镜像,确保使用最新镜像,而不是本地缓存。还可以用--pull missing只拉不存在的镜像或 --pull never不拉取</td></tr><tr><td>--force-recreate</td><td>强制重新创建容器,即使配置或镜像没有变化。</td></tr></tbody></table>
<!--rehype:className=left-align-->
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="docker-compose-配置"><a aria-hidden="true" tabindex="-1" href="#docker-compose-配置"><span class="icon icon-link"></span></a>Docker Compose 配置</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist 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-->
<p><code>docker-compose</code> 的配置文件是一个 <code>YAML</code> 文件,用于定义和运行多容器 Docker 应用程序。通常命名为 <code>docker-compose.yml</code>,它使用单一的 YAML 文件来定义多个容器的集合,以及它们之间的依赖关系和服务。以下是一份 <code>docker-compose.yml</code> 文件的配置模板,包含了常用配置项和解释:</p>
<p><code>docker-compose</code> 的配置文件是一个 <code>YAML</code> 文件,用于定义和运行多容器 Docker 应用程序。通常命名为 <code>docker-compose.yml</code> (现在新的版本建议实用 <code>compose.yaml</code> 代替之前的 <code>docker-compose.yaml</code>) ,它使用单一的 YAML 文件来定义多个容器的集合,以及它们之间的依赖关系和服务。以下是一份 <code>docker-compose.yml</code> 文件的配置模板,包含了常用配置项和解释:</p>
<pre class="language-yml"><code class="language-yml code-highlight"><span class="code-line"><span class="token key atrule">name</span><span class="token punctuation">:</span> myapp
</span><span class="code-line"><span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token string">'3'</span> <span class="token comment"># 已过时</span>
</span><span class="code-line">
@@ -272,9 +307,9 @@
<li>使用 Docker-Compose 可以简化多容器应用程序的部署和管理,但需要注意容器之间的依赖关系和通信。</li>
<li>配置文件中的缩进必须使用空格,不能使用制表符。</li>
<li>可以使用环境变量来动态设置配置项,如数据库密码。</li>
<li>当你修改了 <code>docker-compose.yml</code> 文件后,需要重新运行 <code>docker-compose up</code> 来使改动生效。</li>
<li>使用 <code>docker-compose build</code> 仅重建镜像,而不启动容器。</li>
<li>使用 <code>docker-compose restart</code> 重启容器。</li>
<li>当你修改了 <code>dockercompose.yml</code> 文件后,需要重新运行 <code>docker compose up</code> 来使改动生效。</li>
<li>使用 <code>docker compose build</code> 仅重建镜像,而不启动容器。</li>
<li>使用 <code>docker compose restart</code> 重启容器。</li>
<li>记得清理不再需要的容器和镜像,以避免磁盘空间不足。</li>
</ul>
</div></div></div><div class="wrap h3body-exist"><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">