当前位置: 首页 > news >正文

Docker Compose

Docker Compose介绍

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它允许你通过一个 YAML 文件来配置应用程序的服务、网络和卷等资源,然后使用简单的命令来启动、停止和管理这些服务。

主要功能:

  1. 多容器管理:通过一个配置文件定义多个容器及其依赖关系。
  2. 简化部署:使用 docker-compose up 命令一键启动所有服务。
  3. 环境隔离:可以为不同的环境(如开发、测试、生产)创建不同的配置文件。
  4. 服务依赖:通过 depends_on 配置服务启动顺序。

核心概念:

  • services:定义应用程序的各个服务,如 Web 服务器、数据库等。
    • build: 指定Dockerfile路径
    • image: 使用现有镜像
    • ports: 端口映射(HOST:CONTAINER)
    • volumes: 数据卷配置
    • environment: 环境变量
    • networks: 自定义网络
    • depends_on: 服务依赖顺序
  • networks:定义容器之间的网络连接。
  • volumes:定义数据卷,用于持久化数据。

示例:

version: '3.8'services:web:build: .ports:- "8000:8000"environment:- DEBUG=1depends_on:- redisredis:image: redis:alpinevolumes:- redis_data:/datavolumes:redis_data:

在这个示例中,定义了一个 Web 服务和一个 Redis 服务,Web 服务依赖于 Redis 服务。

常用命令

docker-compose up -d        # 安装并启动服务
docker-compose down         # 停止并删除容器
docker-compose start
docker-compose stop
docker-compose build        # 重新构建镜像
docker-compose logs -f      # 查看日志
docker-compose ps           # 查看服务状态

通过 Docker Compose 启动的容器在关闭之后,能够再次使用 Docker Compose 启动这些已关闭的容器

  • 如果容器之前是通过 docker compose up 启动,之后被关闭,再次使用该命令时,它会检查容器的状态,若容器只是停止状态,会重新启动这些容器;若容器已被删除,则会重新创建并启动容器。

  • docker compose start 该命令专门用于启动已经存在但处于停止状态的容器。它不会重新创建容器,只是简单地启动那些之前通过 Docker Compose 创建但当前处于停止状态的容器。

命名

在 Docker Compose 中,当你使用 docker compose up -d 启动服务时,Docker 会自动为每个服务容器生成一个 唯一名称。你看到的 zabbix-zabbix-server-mysql-1 这种格式的名字是由 Docker Compose 自动生成的命名规则决定的。


✅ 容器名后缀 -1 的含义

🧠 简单解释:

这个 -1Docker Compose 自动分配的服务实例编号

📌 命名规则如下:

<项目名>-<服务名>-<序号>
部分 含义
项目名 默认是当前目录名(也可以通过 -p 指定)
服务名 来自 docker-compose.yml 文件中定义的服务名称(如 zabbix-server-mysql
序号 表示该服务运行了多少个副本(默认从 1 开始)

所以:

  • zabbix-zabbix-server-mysql-1 → 项目名为 zabbix,服务名为 zabbix-server-mysql,第 1 个实例
  • 如果你启动了多个副本(例如使用 --scale),就会出现 -2, -3

🔁 示例说明

假设你的目录结构如下:

~/zabbix/└── docker-compose.yml

你执行命令:

docker compose up -d

Docker Compose 会将项目名设为当前目录名 zabbix,然后根据 docker-compose.yml 创建以下容器:

服务名 容器名
zabbix-server-mysql zabbix-zabbix-server-mysql-1
zabbix-web-nginx-mysql zabbix-zabbix-web-nginx-mysql-1
zabbix-agent zabbix-zabbix-agent-1

💡 可以手动控制容器名称吗?

可以!你可以通过 container_name 字段显式指定容器名:

zabbix-server-mysql:image: zabbix/zabbix-server-mysql:centos-6.4.0container_name: zabbix-serverrestart: always...

这样它的名字就是 zabbix-server,不会带 -1

但注意:使用 container_name 后就不能再用 scale 扩展该服务,因为名字必须唯一。


🚫 注意事项

  • 如果你多次执行 docker compose down && docker compose up -d,旧容器会被删除,新容器仍会使用 -1
  • 如果你想运行多个相同服务(比如测试集群),可以使用 --scale,它会创建 -2, -3 等。

🧾 总结

问题 解释
为什么有 -1 Docker Compose 自动给服务实例添加的编号
能不能去掉? 可以,使用 container_name 显式命名
多实例怎么办? 使用 --scaledeploy.replicas(适用于 Swarm 模式)

docker

http://www.rkmt.cn/news/152842.html

相关文章:

  • 一物一码平台怎么选?深度解析一物一码平台的差异与适配之道 - 品牌智鉴榜
  • 【智谱清言Open-AutoGLM使用秘诀】:掌握5大核心技巧,快速提升AI开发效率
  • EasyGBS施工现场全方位视频监控解决方案
  • Open-AutoGLM为何如此强大?一文看懂其背后3大核心原理
  • 程序员如何用 90 天实现转行黑客(网络安全)的目标?
  • Echarts鼠标悬浮,对应圆点高亮样式设置
  • 参数GPU Write Total Bandwidth的含义是什么,导致其值过高的因素有哪些
  • 2025年抽沙船厂家实力推荐榜:绞吸式挖泥船/多功能作业船/取水浮船源头厂家精选 - 品牌推荐官
  • 2025 年口碑好的陕西铝单板厂家用户好评实力推荐榜 (2) - 朴素的承诺
  • 2025年南京室内装修公司哪家权威专业?权威装修企业年度排名与深度解析 - 工业品牌热点
  • 内核技术问答:内核调度器中有没有识别交互式应用和非交互式应用的算法?
  • 太透彻了!Agent 全面爆发的秘密竟是 ReAct?一文讲透核心原理与实战,建议收藏!
  • 当别人喊“前端已死”时,聪明的人已经在做这 5 件事
  • python题库 No.32 统计数据类型
  • 芯片级守护,让计算更放心!
  • 2025年十大继电器厂家权威推荐榜:基于技术实力与市场应用的全维度深度解析 - 品牌推荐
  • 2025广东最新蓝领岗位外包品牌top5推荐!服务覆盖广州、珠海、深圳等地区,国内优质公司权威榜单发布,助力企业高效用工 - 全局中转站
  • 保姆级教程:商汤大装置如何让城市治理更聪明?全国首个上海规划资源AI大模型深度拆解(非常详细)。
  • 体积小巧,功能强大
  • 视频融合平台EasyCVR智慧农田可视化视频监控解决方案
  • 如何用Open-AutoGLM在24小时内构建一个智能问答系统?
  • rk3568 ubuntu20.04 oop问题分析
  • zui快的验证:用第一笔真实交易说话
  • 2025年电子医药等多领域净化工程服务商权威推荐:聚焦净化车间、无尘车间、实验室、医院洁净科室与生物医药车间 - 呼呼拉呼
  • 删除windows 服务命令sc
  • 2025年12月高低温试验箱比较好的品牌新推荐——十大厂家权威推荐榜 - 品牌推荐大师1
  • 灵遁者科普:意识层次的简要划分
  • 2025年度视频制作公司TOP10:引领行业风向标,目前视频制作公司哪家好精选优质品牌助力工程采购 - 品牌推荐师
  • 贵州美食推荐:西江千户苗寨美食餐厅,草堂茶居 - 提酒换清欢
  • 两坝一峡与升船机线路区别解析测评:基于行程数据与官方信息的权威选择指南 - 品牌推荐