以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!
目录
一、docker.service 文件
二、docker.socket 文件
三、daemon.json 文件
一、docker.service 文件
1、基本介绍
docker.service 是 Docker 守护进程(Docker Daemon)在 Linux 系统上使用 systemd 作为初始化系统时的服务单元文件,它定义了 Docker 服务启动、停止和管理的方式。
docker.service 默认位于 /etc/systemd/system 目录或 /lib/systemd/system 目录。
2、配置示例
[Unit]Description=Docker Application Container EngineDocumentation=https://docs.docker.comAfter=network-online.target docker.socket firewalld.serviceWants=network-online.targetRequires=docker.socket[Service]Type=notifyExecStart=/usr/bin/dockerd -H fd://ExecReload=/bin/kill -s HUP $MAINPIDLimitNOFILE=1048576LimitNPROC=infinityLimitCORE=infinityTasksMax=infinityTimeoutStartSec=0Delegate=yesKillMode=processRestart=on-failureStartLimitBurst=3StartLimitInterval=60s[Install]WantedBy=multi-user.target
3、配置说明
[Unit]:定义了 Docker 服务的元数据信息,包括描述、文档链接、启动顺序等[Service]:定义了 Docker 守护进程的行为和属性,包括启动命令、重新加载命令、资源限制等[install]:定义了 Docker 服务的安装位置和所属目标############################################################################ [Unit] 下配置说明Description # 对 Docker 服务的描述Documentation # Docker 在线文档链接After # 指定 Docker 服务在哪些服务之后启动Wants: # 指定 Docker 服务启动后,需要启动的服务Requires # 指定 Docker 服务启动前,必须已启动的服务# [Service] 下配置说明Type # 指定 Docker 服务启动时的行为。notify 表示服务就绪后发送信号给 systemdExecStart # Docker 服务启动命令ExecReload # Docker 服务重载命令LimitNOFILE # 指定 Docker 服务最大文件句柄数,默认为 infinity 无限制LimitNPROC # 指定 Docker 服务最大进程数,默认为 infinity 无限制LimitCORE # 指定 Docker 服务最大核心转存文件大小,默认为 infinity 无限制TasksMax # 指定 Docker 服务最大任务数,默认为 infinity 无限制TimeoutStartSec # 指定启动 Docker 服务时等待的秒数Delegate # 指定为 yes 时,systemd 不会重置容器的 cgroupsKillMode # 指定 Systemd 如何杀死 Docker 进程(control-group、process、mixed、none)Restart # 指定 Docker 服务的重启策略,默认StartLimitInterval # 指定 Docker 服务启动失败计数的时间窗口StartLimitBurst # 指定 StartLimitInterval 时间内,Docker 服务可以启动失败的次数# [Install] 下配置说明WantedBy # 指定启动 Docker 服务的 target,默认为 multi-user.target###########################################################################🔔 ExecStart 指令示例说明:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock(1) /usr/bin/dockerd: 指定 Docker daemon(即 dockerd)的完整路径(2) -H fd://: 指定 Docker daemon 监听的套接字类型fd:// 表示 Docker daemon 将使用文件描述符传递(file descriptor passing)与 Docker Client 通信(3) --containerd=/run/containerd/containerd.sock: 指定 Docker daemon 寻找 Containerd 套接字的位置###########################################################################🔔 Restart 指令取值说明:no(默认值):服务不会被重启on-success:仅当服务正常退出(退出码为0)时才会重启on-failure:仅当服务异常退出(非零退出码)时才会重启on-abnormal:仅当服务以异常信号退出或被终止时才会重启on-abort:仅当服务因为接收到 SIGABRT 信号而退出时才会重启on-watchdog:仅当服务超时(看门狗超时)时才会重启always:无论服务是正常退出还是异常退出,都会重启
二、docker.socket 文件
1、基本介绍
docker.socket 是 Docker 守护进程(Docker Daemon)在 Linux 系统上使用 systemd 作为初始化系统时的 UNIX 套接字文件,是 Docker API 的主要入口,Docker Client 默认使用该套接字执行 Docker 命令。
docker.socket 默认位于 /etc/systemd/system 目录或 /lib/systemd/system 目录。
2、配置示例
[Unit]Description=Docker Socket for the APIPartOf=docker.service[Socket]ListenStream=/run/docker.sockSocketMode=0660SocketUser=rootSocketGroup=root[Install]WantedBy=sockets.target
3、配置说明
# [Unit] 下配置说明Description # 对套接字的描述 PartOf # 取值为 docker.service,表示是 docker.service 的一部分# [Socket] 下配置说明ListenStream # 指定套接字的监听路径SocketMode # 指定套接字的访问权限SocketUser # 指定套接字的用户SocketGroup # 指定套接字的组# [Install] 下配置说明WantedBy # 指定当 sockets.target 启动时,本套接字被激活
三、daemon.json 文件
1、基本介绍
daemon.json 也是 Docker 守护进程(Docker Daemon)的配置文件,用于 Linux 系统管理员自定义 Docker 守护程序的行为。
daemon.json 默认位于 /etc/docker 目录。
2、配置示例
{"data-root": "/data/docker", "exec-root": "/var/run/docker", "bridge": "none", "iptables": true, "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:4243"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-level": "warn", "log-opts": { "max-size": "500m", "max-file": "3" }, "insecure-registries" : ["demo.local.hub:5000"], "bip": "192.168.100.1/24", "default-address-pools": [ { "scope": "local", "base": "172.17.0.0/16", "size": 24 } ], "oom-score-adjust": -1000, "registry-mirrors": ["https://registry.docker-cn.com"], "storage-driver": "overlay2", "storage-opts":["overlay2.override_kernel_check=true"], "live-restore": true, "max-concurrent-downloads": 5}
3、配置说明
data-root # 指定 Docker 数据目录,默认为 /var/lib/dockerexec-root # 指定 Docker 执行状态文件的存储路径,默认为 /var/run/dockerbridge # 指定 Docker 在启动时,是否自动创建默认网桥接口 docker0iptables # 指定是否允许 Docker 修改 iptables 规则,true 允许,false 禁止hosts # 指定 Docker 监听的套接字和端口exec-opts # 指定 Docker 的 cgroup 驱动类型,可选 systemd(K8S 推荐这个)、cgroupfslog-driver # 指定 Docker 日志驱动类型,默认为 json-filelog-level # 指定 Docker 日志记录级别,包括 debug、info、warn、error、fatallog-opts # 指定 Docker 日志文件策略,max-size 指定每个日志文件大小,max-file 指定保留的日志文件数insecure-registries # 指定 Docker 可以通过 HTTP 连接的镜像仓库地址bip # 指定 Docker 默认网桥接口 docker0 的 IP 地址和网络掩码default-address-pools # 指定 Docker 容器使用的子网地址池oom-score-adjust # 指定 Docker OOM 得分值registry-mirrors # 指定 Docker 拉取镜像时使用的镜像仓库加速地址storage-driver # 指定 Docker 存储驱动类型,推荐 overlay2storage-opts # 指定 Docker 额外的存储驱动选项live-restore # 指定 Docker 是否启用“实时恢复”功能,true 为启用(允许 Docker 在更新或重启时,不终止运行中的容器)max-concurrent-downloads # 指定 Docker 拉取镜像时同时运行的最大下载任务数