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

Docker 与 Docker-Compose 的区别

Docker 和 Docker-Compose 是 Docker 生态系统中的两个核心工具,它们有不同的定位和功能:

1. 基本概念区别

特性DockerDocker-Compose
工具类型单容器管理工具多容器编排工具
配置文件使用 Dockerfile使用 docker-compose.yml
主要用途构建和运行单个容器定义和运行多容器应用
命令接口docker CLIdocker-compose CLI

2. 功能区别

Docker

  • 专注于单个容器的生命周期管理

  • 主要操作:

    • docker build - 从 Dockerfile 构建镜像

    • docker run - 运行容器

    • docker stop/start/rm - 管理容器状态

  • 需要手动处理容器间的网络和卷连接

Docker-Compose

  • 用于管理多个相关联的容器组成的应用

  • 主要功能:

    • 通过 YAML 文件定义整个应用栈

    • 自动处理容器间的网络连接

    • 管理共享卷

    • 协调服务启动顺序

  • 常用命令:

    • docker-compose up - 启动所有服务

    • docker-compose down - 停止并移除所有服务

3. 使用场景对比

适合使用 Docker 的情况

  • 开发单个容器应用

  • 需要精细控制容器配置

  • 构建自定义镜像

  • 测试单个服务

适合使用 Docker-Compose 的情况

  • 开发多服务应用(如前端+后端+数据库)

  • 需要定义服务间依赖关系

  • 快速复制开发环境

  • 一键部署完整应用栈

4. 配置方式对比

Docker 示例(运行 WordPress):

# 先创建网络
docker network create wp-network# 运行MySQL容器
docker run -d --name mysql \-e MYSQL_ROOT_PASSWORD=secret \-e MYSQL_DATABASE=wordpress \--network wp-network \mysql:5.7# 运行WordPress容器
docker run -d --name wordpress \-e WORDPRESS_DB_HOST=mysql \-e WORDPRESS_DB_USER=root \-e WORDPRESS_DB_PASSWORD=secret \-p 8080:80 \--network wp-network \wordpress

Docker-Compose 等效配置(docker-compose.yml):

version: '3'
services:db:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: secretMYSQL_DATABASE: wordpresswordpress:depends_on:- dbimage: wordpressports:- "8080:80"environment:WORDPRESS_DB_HOST: dbWORDPRESS_DB_USER: rootWORDPRESS_DB_PASSWORD: secret

5. 版本与发展

  • Docker:核心引擎,持续更新

  • Docker-Compose

    • 传统版本:Python 编写的独立工具(docker-compose)

    • 新版本:已集成到 Docker CLI 中(docker compose,注意没有横线)

总结

简单来说:

  • Docker 像是"单兵作战"工具,适合管理单个容器

  • Docker-Compose 像是"指挥官",可以协调多个容器组成的应用系统

两者通常结合使用 - 用 Docker 构建单个容器镜像,用 Docker-Compose 编排由这些镜像组成的完整应用。

相关文章:

  • leetcode day36 01背包问题 494
  • 08_Docker Portainer可视化管理
  • 【Linux】47.高级IO(1)
  • SQLiteDatabase 增删改查(CRUD)详细操作
  • Java函数生成实际应用案例:数据处理流水线
  • # 基于PyTorch的食品图像分类系统:从训练到部署全流程指南
  • 基于javaweb的SpringBoot校园失物招领系统设计与实现(源码+文档+部署讲解)
  • 鸿蒙NEXT开发权限工具类(申请授权相关)(ArkTs)
  • Python-27:游戏英雄升级潜力评估
  • 【TeamFlow】4.3.1 SI单位系统库(Units)
  • 《MySQL 核心技能:SQL 查询与数据库概述》
  • 达梦官方管理工具 SQLark 更新--不仅支持达梦、Oracle、MySQL,还新增 PostgreSQL 数据库!
  • android 发送onkey广播,Android 添加键值并上报从驱动到上层
  • PerfettoSQL
  • 【RAG】一篇文章介绍多模态RAG(MRAG)
  • 电商虚拟户分账系统:破解电商资金管理难题的密钥
  • 蓝牙耳机开发--提示音制作生成的方法
  • 深入探索RAG:用LlamaIndex为大语言模型扩展知识,实现智能检索增强生成
  • Win10 关闭自动更新、关闭自动更新并重启
  • Jetson Orin NX 16G 配置GO1强化学习运行环境
  • 京东美团商战,能惠及骑手吗?
  • AI时代的阅读——当今时代呼唤文学的思想实验和人文认知
  • 举报人不服相关部门奖励“缺斤少两”,两地分别作出再认定
  • 专访|前伊核谈判顾问:伊朗不信任美国,任何核协议都会有中俄参与
  • 全球首个AI价值观数据集出炉
  • 庆祝中国印尼建交75周年招待会暨万隆会议70周年纪念活动在京举行