Docker Socket 激活机制

 

[root@node02 ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

[root@node02 ~]# systemctl stop docker docker.socket

1. 什么是 Socket 激活(Socket Activation)?

Socket 激活是 systemd 的一个特性,它允许服务在有连接请求时才启动,而不是在系统启动时就启动。这是一种"按需启动"的机制。

2. 为什么会有 docker.socket?

在 CentOS 7/RHEL 7 上,Docker 默认使用 socket 激活,主要是为了:

优点:

  • 快速启动:系统启动时 Docker 不立即启动,加快系linux统启动速度

  • 资源节约:如果没有 Docker 连接请求,服务不会占用资源

  • 按需启动:第一次执行 docker ps 等命令时才会启动 Docker 守护进程

3. 工作流程对比:

传统方式(没有 socket 激活):

系统启动 → docker.service 启动 → Docker 守护进程运行 → 监听 /var/run/docker.sock
用户执行 docker ps → 连接到已存在的 socket → 获取结果
Socket 激活方式:

系统启动 → docker.socket 启动(仅监听socket) → Docker守护进程**未运行**
用户执行 docker ps → 连接到 /var/run/docker.sock → systemd 检测到连接 → 启动 docker.service → Docker守护进程运行 → 处理请求

posted @ 2025-12-25 11:02  Peter.Jones  阅读(3)  评论(0)    收藏  举报