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守护进程运行 → 处理请求

浙公网安备 33010602011771号