Docker引擎、Docker守护进程和Docker客户端

发布于:2025-04-15 ⋅ 阅读:(28) ⋅ 点赞:(0)

在上一篇中我们提到了广义docker的概念,Docker是什么?狭义和广义上的区别,该说清的就说清-CSDN博客

  • 广义的 "Docker" 可能包括:

    • Docker Engine(引擎)

    • Docker Compose(多容器编排)

    • Docker Hub(镜像仓库)

    • Docker Desktop(桌面端工具)

    • Kubernetes 集成等。

这里面有关docker引擎和docker desktop说一下。

Docker 引擎主要由以下两部分组成:

  • Docker 守护进程(dockerd

    • 常驻后台的核心服务,负责管理容器生命周期、镜像、网络、存储等。

    • 监听 Docker API 请求(默认通过 /var/run/docker.sock 或 TCP 端口)。

  • Docker 客户端(docker CLI)

    • 用户通过命令行工具与守护进程交互(如 docker rundocker build)。

也就是Docker 引擎(Docker Engine)不仅仅是守护进程(dockerd),而是一个完整的容器运行时系统,它为容器提供了一系列核心功能和支持。docker引擎是包括守护进程和客户端(cli)的。

这里既然说了Docker 引擎是包含了客户端(cli)的,前面又说了广义的docker是包含Docker Desktop的,从字面意思上看Docker Desktop是不是也是一个客户端呢?

Docker Desktop 和 Docker Engine 中的 docker CLI 客户端(Client)本质上是同一个工具,但它们的安装方式、运行环境以及部分功能存在差异。

特性 Docker Desktop 中的 Client Docker Engine 中的 Client
安装方式 作为 Docker Desktop 的一部分自动安装(捆绑包) 单独安装(如 apt-get install docker-ce-cli
运行环境 主要在 macOS/Windows 上运行 主要在 Linux 服务器或虚拟机中运行
守护进程位置 通过虚拟机(Linux VM)或 WSL2 运行 dockerd 直接运行在宿主机的 Linux 内核上
默认通信方式 通过 unix:///var/run/docker.sock 转发到 Linux VM 直接连接本地或远程 dockerd
多平台支持 自动处理 macOS/Windows 与 Linux 的架构转换 需手动处理跨平台镜像(如 --platform linux/amd64
图形界面 包含 GUI(管理容器、镜像、设置等) 仅 CLI,无图形界面
集成工具 内置 Kubernetes、Volume 管理、Dev Environments 等 需手动配置额外工具(如 kubectldocker-compose

Docker Desktop 和 Docker Engine 中的 docker CLI 客户端是同一个工具的不同分发形式,核心功能一致,但 Docker Desktop 对其进行了封装和扩展,更适合桌面用户。Engine 的客户端则更轻量,适合服务器环境。根据需求选择即可,两者命令完全兼容。

  • Docker 客户端可以安装在 任何能访问 Docker 守护进程的机器(包括 Docker Host 或网络内其他主机)。

针对文中列表红色字体提到的远程 dockerd再即兴说一下docker cli是安装在哪里呢?其实:Docker 客户端(docker CLI)可以安装在 Docker 主机(Host) 上,也可以安装在 网络内的其他机器 上,具体取决于如何配置客户端与 Docker 守护进程(dockerd)的通信方式。以下是详细说明:

默认情况:客户端与守护进程在同一台机器(Docker Host)

  • 典型安装方式
    当在 Linux 系统上安装 Docker(如通过 apt-get install docker-ce),会同时安装:

    • Docker 守护进程(dockerd:运行在后台,管理容器。

    • Docker 客户端(docker CLI):通过本地 Unix 套接字(/var/run/docker.sock)与守护进程通信。

  • 使用示例
    直接在 Docker Host 上执行命令(如 docker psdocker run)。

客户端与守护进程分离(远程访问)

Docker 客户端可以安装在网络内的其他机器,通过配置连接到远程 Docker 守护进程。常见场景:

(1)通过 TCP 暴露 Docker 守护进程
(2)通过 SSH 安全连接
(3)使用 TLS 加密通信(生产环境推荐)

对于上述三种情况的典型应用场景列表:

场景 客户端位置 通信方式 适用环境
本地开发 Docker Host 本地 Unix 套接字 个人电脑、开发机
远程管理 内网其他机器 TCP/SSH/TLS 团队协作、测试环境
CI/CD 流水线 CI 服务器(如 Jenkins) TLS 加密 生产环境

对于docker cli和docker 守护进程(完全可以在一台机器上安装),基本使用方法如下所示,这部分在docker的应用时再说。


网站公告

今日签到

点亮在社区的每一天
去签到