docker compose管理docker服务的方法
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">一、Docker Compose 管理服务的核心方式</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">1. 核心配置文件:docker-compose.yml</a></li><li><a href="#_lab2_0_1">2. 核心命令:管理服务的生命周期</a></li><li><a href="#_lab2_0_2">3. 关键管理能力详解</a></li></ul><li><a href="#_label1">二、实操示例:完整的服务管理流程</a></li><ul class="second_class_ul"></ul><li><a href="#_label2">总结</a></li><ul class="second_class_ul"></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>一、Docker Compose 管理服务的核心方式</h2><p>Docker Compose 遵循 <strong>"一个配置文件,一套命令"</strong> 的核心思想,主要通过以下步骤和命令来管理服务:</p>
<p class="maodian"><a name="_lab2_0_0"></a></p><h3>1. 核心配置文件:docker-compose.yml</h3>
<p>这是定义所有服务的核心,它描述了服务的镜像、端口映射、数据卷、网络、依赖关系、环境变量等。<strong>示例配置文件</strong>(以 Web + 数据库为例):</p>
<p>yaml</p>
<div class="jb51code"><pre class="brush:yaml;">version: '3.8'# Compose 文件版本(需与 Docker 版本匹配)
# 定义要管理的服务
services:
# 第一个服务:web 应用
web:
image: nginx:alpine# 使用的镜像
ports:
- "8080:80"# 端口映射(主机:容器)
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf# 挂载配置文件
depends_on:
- db# 依赖 db 服务,启动时先启动 db
restart: always# 容器退出时自动重启
networks:
- app-network# 加入自定义网络
# 第二个服务:数据库
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: 123456# 环境变量(数据库密码)
MYSQL_DATABASE: mydb
volumes:
- db-data:/var/lib/mysql# 持久化数据卷
networks:
- app-network
# 定义数据卷(持久化数据)
volumes:
db-data:
# 定义自定义网络(隔离服务)
networks:
app-network:
driver: bridge</pre></div>
<p class="maodian"><a name="_lab2_0_1"></a></p><h3>2. 核心命令:管理服务的生命周期</h3>
<p>所有命令都在 <code>docker-compose.yml</code> 所在目录执行,核心命令如下:</p>
<table><thead><tr><th>命令</th><th>作用</th><th>示例</th></tr></thead><tbody><tr><td><code>docker-compose up</code></td><td>启动所有服务(前台运行)</td><td><code>docker-compose up</code>(前台)<code>docker-compose up -d</code>(后台运行,推荐)</td></tr><tr><td><code>docker-compose down</code></td><td>停止并删除容器、网络(保留数据卷)</td><td><code>docker-compose down</code>(仅停容器)<code>docker-compose down -v</code>(删除数据卷)</td></tr><tr><td><code>docker-compose start</code></td><td>启动已创建的服务容器</td><td><code>docker-compose start web</code>(仅启动 web 服务)</td></tr><tr><td><code>docker-compose stop</code></td><td>停止服务容器(不删除)</td><td><code>docker-compose stop db</code>(仅停止 db 服务)</td></tr><tr><td><code>docker-compose restart</code></td><td>重启服务</td><td><code>docker-compose restart web</code></td></tr><tr><td><code>docker-compose ps</code></td><td>查看服务状态</td><td><code>docker-compose ps</code>(列出所有服务容器)</td></tr><tr><td><code>docker-compose logs</code></td><td>查看服务日志</td><td><code>docker-compose logs -f web</code>(实时查看 web 日志)</td></tr><tr><td><code>docker-compose scale</code></td><td>扩缩容服务(旧版)</td><td><code>docker-compose scale web=3</code>(启动 3 个 web 容器)</td></tr><tr><td><code>docker-compose up --scale</code></td><td>扩缩容服务(新版)</td><td><code>docker-compose up -d --scale web=3</code></td></tr></tbody></table>
<p class="maodian"><a name="_lab2_0_2"></a></p><h3>3. 关键管理能力详解</h3>
<ul><li><strong>依赖管理</strong>:通过 <code>depends_on</code> 定义服务启动顺序(如先启动数据库,再启动 web),确保服务依赖的组件先就绪。</li><li><strong>资源隔离</strong>:通过自定义 <code>networks</code> 让服务仅在指定网络内通信(避免与主机其他容器冲突),通过 <code>volumes</code> 持久化数据(容器删除后数据不丢失)。</li><li><strong>环境配置</strong>:通过 <code>environment</code> 或 <code>.env</code> 文件注入环境变量,实现配置与代码分离(如数据库密码不硬编码)。</li><li><strong>自动重启</strong>:通过 <code>restart: always</code> 配置,服务容器异常退出时自动重启,保证服务可用性。</li><li><strong>日志聚合</strong>:通过 <code>docker-compose logs</code> 统一查看所有服务的日志,无需逐个容器查看。</li></ul>
<p class="maodian"><a name="_label1"></a></p><h2>二、实操示例:完整的服务管理流程</h2>
<p><strong>编写配置文件</strong>:创建 <code>docker-compose.yml</code>(如上述 Web + MySQL 示例)。</p>
<p><strong>启动服务</strong>:</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose up -d# 后台启动所有服务</pre></div>
<p><strong>查看状态</strong>:</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose ps# 查看服务是否正常运行</pre></div>
<p><strong>查看日志</strong>:</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose logs -f web# 实时查看 web 服务日志</pre></div>
<p><strong>扩缩容</strong>:</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose up -d --scale web=2# 启动 2 个 web 容器</pre></div>
<p><strong>停止服务</strong>:</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose stop# 停止所有服务(容器保留)</pre></div>
<p><strong>清理资源</strong>:</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose down -v# 停止并删除容器、网络、数据卷(谨慎使用)</pre></div>
<p>Docker Compose 主要分为两个大版本,命令形式和安装 / 运行方式有明显区别:</p>
<table><thead><tr><th>版本</th><th>命令形式</th><th>核心特征</th></tr></thead><tbody><tr><td>Compose V1</td><td><code>docker-compose up</code></td><td>基于 Python 开发的独立工具,需要单独安装(如 <code>pip install docker-compose</code>)</td></tr><tr><td>Compose V2</td><td><code>docker compose up</code></td><td><p>集成到 Docker CLI 中的子命令(Go 语言重构),随 Docker Desktop 或 Docker Engine 一起分发</p></td></tr></tbody></table>
<p class="maodian"><a name="_label2"></a></p><h2>总结</h2>
<ol><li>Docker Compose 通过 <code>docker-compose.yml</code> 统一定义多服务的配置(镜像、端口、依赖、网络等),替代手动逐个创建容器的繁琐操作。</li><li>核心命令(<code>up/down/start/stop/logs</code>)实现服务全生命周期管理,支持启动、停止、重启、扩缩容、日志查看等核心操作。</li><li>关键能力(依赖管理、资源隔离、自动重启)确保多容器应用的稳定性和可维护性,是单机多容器应用的首选管理工具。</li></ol>
<p>到此这篇关于docker compose管理docker服务的方法的文章就介绍到这了,更多相关docker compose管理docker服务内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
頁:
[1]