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

dockers的组合家族:docker-ce, docker-ce-cli, containerd.io, docker-compose-plugin

1.docker-ce:Docker引擎核心
  • 核心作用:Docker的守护进程和核心功能,是运行容器的“发动机”。

  • 包含内容

    • dockerd:长期运行的后台服务,负责管理镜像、容器、网络、数据卷。

    • docker客户端(作为软链接指向docker-ce-cli的产物)。

    • 容器运行时接口实现。

  • 工作原理:你发出的docker run命令实际上发送给dockerd,它再去拉取镜像、创建并运行容器。

2.docker-ce-cli:Docker命令行工具

  • 核心作用:与Docker引擎交互的客户端命令行工具

  • 包含内容/usr/bin/docker这个可执行文件。

  • 工作原理:你输入docker psdocker build等命令,它将这些请求通过API发送给dockerd(可以连接本机或远程主机的守护进程)。

  • 注意:即使没有本地引擎,你也可以仅安装此包来连接远程Docker主机。

3.containerd.io:容器运行时

  • 核心作用:负责实际运行容器的底层核心组件。

  • 包含内容containerd守护进程及其配套工具(ctrcontainerd-shim)。

  • 职责链dockerd并不直接运行容器,而是调用containerd,由它来:

    • 管理容器的生命周期(启动、停止、暂停)

    • 管理镜像的拉取、存储、解压(docker pull实际是它做)

    • 管理底层存储(overlay2等文件系统)

    • 通过runc最终启动容器进程

  • 为什么分开containerd是CNCF毕业项目,被Docker、Kubernetes(通过CRI)等系统共同使用,便于标准化。

4.docker-compose-plugin:多容器编排插件

  • 核心作用:在Docker CLI内部原生支持docker compose命令(注意没有横杠)。

  • 与传统区别

    • 旧方式:独立安装docker-compose(Python编写,独立二进制文件,命令是docker-compose

    • 新方式:此插件提供docker compose(是Docker CLI的子命令,Go语言编写,性能更好,集成更紧密)

  • 功能:通过一个YAML文件定义多个容器(如Web应用 + Redis + MySQL),用一条命令docker compose up -d一键启动所有关联服务。

  • 注意:如果你习惯旧命令docker-compose,安装此插件后不会自动创建别名,但可以用docker compose完全替代。

总结:docker:是一个用于开发、分布和运行应用程序的开放平台。它可将应用程序与基础架构分离,以便快速交付软件。

docker-ce 是Docker的社区版本,提供了构建、发布和运行容器的工具和服务。

docker-ce-cli 是Docker社区版的命令行工具,用来和Docker守护进程进行交互。

containerd.ioDocker运行时的核心组件,提供容器的生命周期、镜像、网络管理等功能。
docker-compose-plugin用于在单台主机上管理和编排多个容器的运行。
http://www.jsqmd.com/news/620949/

相关文章:

  • 小白程序员必看:轻松入门大模型智能体,收藏这篇从入门到进阶的实用指南
  • 新鲜出炉!2026 Agent智能体平台推荐排行 办公/营销/研发全场景适配
  • 斯坦福大学的教授Does that make any sense of people
  • BM2102-9x-1 Sub-1G OOK无线发射模块驱动与工程实践
  • 2026祖传秘方申请批号全攻略:来料代工厂家/械字号申报/消字号备案代办/祖传秘方申请批号/秘方备案代办代工/秘方委托生产、备案电话/选择指南 - 优质品牌商家
  • TinySerial:ESP平台高精度软件串口实现
  • 前FBI网络安全负责人:业余网络罪犯比专业黑客更危险
  • 环形缓冲区(Ring Buffer)
  • NativeFB:车规级原生帧缓冲驱动框架设计与实践
  • MicroPython LVGL基础知识和概念
  • Go语言中的并发编程:从Goroutine到Channel
  • 思科ITN 7.00 PTSA综合实验通关指南:多版本识别与满分配置解析
  • Linux网络编程核心API速查手册秸
  • RK3128 Android系统WiFi兼容性实战:如何编写一个智能的USB网卡自动识别与加载脚本
  • Vue3中keep-alive缓存失效的常见场景与层级关系解析
  • Google团队盘+GDIndex实战:免费扩容到无限空间的私人云盘方案
  • MAX14661:16通道SPI模拟多路复用器深度解析
  • 万字拆解 LLM 运行机制:Token、上下文与采样参数狼
  • MindSpore 环境配置完全指南侠
  • 高防服务器带宽跑满、业务掉线?流量限制与清洗优化
  • Gemma-3-12b-itGPU算力适配指南:A100/H100/A800多卡并行配置参数详解
  • 遥控器定制全流程:从开模到出货,一文看懂
  • 让你「鞭打」Claude,被Anthropic直接发「律师函」了吧
  • Agent学习--LLM--推理熵
  • STM32G474的COMP比较器,除了保护电路还能这么玩?一个LED灯搞定电压监测
  • 【无标题】RHCSA第一阶段练习题
  • C++ P1151 子数整数
  • 汽车诊断数据太大怎么办?手把手教你用AUTOSAR CanTp模块搞定大数据传输
  • 多语言代码执行沙盒 judge0 部署
  • 2025届学术党必备的六大降重复率工具实测分析