• Docker服务systemd配置文件详解


    Docker是一种流行的容器化技术,它可以帮助开发者快速构建、打包和部署应用程序。在Linux系统中,Docker服务通常由systemd进行管理和控制。systemd是一个系统和服务管理器,它可以启动、停止和重启系统服务,并监控它们的运行状态。在本文中,我们将深入探讨Docker服务的systemd配置文件,了解各个配置项的含义和作用。

    一、Docker服务systemd配置文件示例

    在Linux系统中,Docker服务的systemd配置文件通常位于/etc/systemd/system/docker.service。下面是一个Docker服务的systemd配置文件示例:

    [Unit]
    Description=Docker Application Container Engine
    Documentation=https://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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

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

    二、[Unit]部分

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

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

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

    三、[Service]部分

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

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

    在上述示例中,Type指定了进程类型为notifyExecStart指定了启动命令为/usr/bin/dockerdExecReload指定了重新加载命令为/bin/kill -s HUP $MAINPIDLimitNOFILE指定了文件描述符限制为infinityLimitNPROC指定了进程数限制为infinityLimitCORE指定了core文件大小限制为infinityDelegate允许systemd不重置docker容器的cgroup,KillMode指定了进程被杀死的方式为processRestart指定了当服务异常退出时,自动重启服务,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
    
    • 1
    • 2

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

  • 相关阅读:
    大数据开发之Apache Hive
    树莓派(七)文件系统及其目录结构、虚拟文件系统
    猿辅导纪录片《奔流》温情献映开学季,讲述不同岗位的教育坚守
    数字化转型这么火热,企业选择数字化转型都有哪些目的
    Arduino之ESP8266编程学习总结体会
    oracle存储过程记录
    记录一次Golang逃逸分析
    协同云办公原来可以这么简单!只需掌握这5个技巧
    Sonatype Nexus3 搭建私有仓库
    前端基础之《NodeJS(4)—Buffer缓冲区》
  • 原文地址:https://blog.csdn.net/qq_46207024/article/details/134006150