# Github仓库示例地址: https://github.com/moby/moby/blob/master/contrib/init/systemd/docker.service # 文件位置: /usr/lib/systemd/system/docker.service [Unit] # 服务的描述信息 Description=Docker Application Container Engine # 指向 Docker 官方文档,便于 systemd 工具读取帮助信息 Documentation=https://docs.docker.com # 在网络完全上线、DNS 可用、docker.socket、firewalld、containerd 等服务就绪后再启动 After=network-online.target nss-lookup.target docker.socket firewalld.service containerd.service time-set.target # 希望这些服务也在启动时被激活,但不是强制依赖 Wants=network-online.target containerd.service # Docker 服务依赖 docker.socket,否则无法启动 Requires=docker.socket # 在设定时间窗口内允许最多 3 次启动失败 StartLimitBurst=3 # 启动失败计数的时间窗口为 60 秒 StartLimitIntervalSec=60 [Service] # Docker 使用 systemd 的通知机制汇报启动是否完成 Type=notify # Docker 守护进程的启动命令,fd:// 表示让 systemd 管理 socket;指定 containerd 套接字路径 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock # 重载配置时给主进程发送 HUP 信号 ExecReload=/bin/kill -s HUP $MAINPID # 不限制启动超时时间,避免因系统繁忙造成 dockerd 启动失败 TimeoutStartSec=0 # 发生失败重启前等待 2 秒 RestartSec=2 # 无论因何原因退出都自动重启 dRestart=always # 设为无限以避免内核资源统计带来的性能开销 LimitNPROC=infinity LimitCORE=infinity # 允许 Docker 创建任意数量的任务(需 systemd 226+) TasksMax=infinity # 允许 docker 自己管理其 cgroups,不受 systemd 重置影响 Delegate=yes # 杀进程时只杀主进程,不影响容器子进程 KillMode=process # 降低 Docker 在内存不足(OOM)时被内核优先杀掉的概率 OOMScoreAdjust=-500 [Install] # 让服务在多用户运行级别自动启动 WantedBy=multi-user.target