Docker服务systemd配置文件详解_docker syste

116 阅读2分钟

Documentation=docs.docker.com After=network-online.target firewalld.service Wants=network-online.target

[Service] Type=notify ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s

[Install] WantedBy=multi-user.target


该配置文件包含了三个部分:`[Unit]``[Service]``[Install]`。下面将详细介绍每个部分的含义和作用。


## 二、[Unit]部分


`[Unit]`部分用于描述服务的基本信息,包括服务的名称、描述、文档地址、依赖关系等。下面是`[Unit]`部分的各个配置项的含义和作用:


* `Description`:描述服务的作用。
* `Documentation`:文档地址。
* `After`:在哪些服务之后启动,多个服务之间用空格隔开。
* `Wants`:如果该服务启动,则需要哪些服务启动,多个服务之间用空格隔开。


在上述示例中,`Description`描述了Docker服务的作用,`Documentation`指向了Docker的官方文档地址,`After`指定了在`network-online.target``firewalld.service`之后启动,`Wants`指定了如果该服务启动,则需要`network-online.target`服务启动。


## 三、[Service]部分


`[Service]`部分用于描述服务的启动命令、进程管理、重启策略等。下面是`[Service]`部分的各个配置项的含义和作用:


* `Type`:指定进程类型,可选值为`simple``forking``oneshot``dbus``notify``idle`* `ExecStart`:启动命令。
* `ExecReload`:重新加载命令。
* `LimitNOFILE`:文件描述符限制。
* `LimitNPROC`:进程数限制。
* `LimitCORE`:core文件大小限制。
* `Delegate`:允许systemd不重置docker容器的cgroup。
* `KillMode`:指定进程被杀死的方式,可选值为`control-group``process``mixed`* `Restart`:当服务异常退出时,自动重启服务。
* `StartLimitBurst`:在`StartLimitInterval`时间内,最多重启多少次。
* `StartLimitInterval`:重启时间间隔。


在上述示例中,`Type`指定了进程类型为`notify``ExecStart`指定了启动命令为`/usr/bin/dockerd``ExecReload`指定了重新加载命令为`/bin/kill -s HUP $MAINPID``LimitNOFILE`指定了文件描述符限制为`infinity``LimitNPROC`指定了进程数限制为`infinity``LimitCORE`指定了core文件大小限制为`infinity``Delegate`允许systemd不重置docker容器的cgroup,`KillMode`指定了进程被杀死的方式为`process``Restart`指定了当服务异常退出时,自动重启服务,`StartLimitBurst`指定了在`StartLimitInterval`时间内,最多重启3次,`StartLimitInterval`指定了重启时间间隔为60秒。


## 四、[Install]部分


`[Install]`部分用于描述服务的安装信息,包括服务的启动级别、启动顺序等。下面是`[Install]`部分的各个配置项的含义和作用:


* `WantedBy`:当哪个服务启动时,自动启动该服务。


在上述示例中,`WantedBy`指定了当`multi-user.target`服务启动时,自动启动该服务。


## 五、其他


除了以上介绍的配置项外,还有一些常见的Docker服务的systemd配置文件中使用的配置项:


* `EnvironmentFile`:指定环境变量文件路径,可以在启动命令中使用这些环境变量。
* `User`:指定服务运行的用户。
* `Group`:指定服务运行的用户组。
* `WorkingDirectory`:指定服务的工作目录。
* `ExecStartPre`:在启动命令之前执行的命令。
* `ExecStartPost`:在启动命令之后执行的命令。
* `ExecStop`:停止命令。
* `ExecStopPost`:在停止命令之后执行的命令。
* `TimeoutStartSec`:启动超时时间。
* `TimeoutStopSec`:停止超时时间。


这些配置项可以根据具体需求进行添加或修改。在配置完Docker服务的systemd配置文件后,需要使用以下命令重新加载systemd配置文件并重启Docker服务:



sudo systemctl daemon-reload sudo systemctl restart docker.service


总之,理解和熟悉Docker服务的systemd配置文件对于管理和维护Docker容器非常重要。