dockerd 是 Docker 的服务端守护进程,负责镜像管理、容器的创建与运行,以及网络、存储等核心工作。一般情况下,dockerd 由系统的 systemd 服务(服务名通常为 docker)托管,无需手动启动;但在调试或定制配置时,了解它的命令行选项会很有帮助。
命令格式
Usage: dockerd [OPTIONS]
A self-sufficient runtime for containers.
可以通过 dockerd --help 查看全部选项。下面按功能分类整理常用选项。
网络相关选项
| 选项 | 说明 |
| --bridge string | 指定容器所挂载的网桥,默认为 docker0;设为 none 则禁用容器网络 |
| --bip string | 指定网桥的 IP 地址与子网掩码(CIDR,如 192.168.1.5/24) |
| --default-gateway ip | 指定容器的默认网关(IPv4) |
| --default-gateway-v6 ip | 指定容器的默认网关(IPv6) |
| --fixed-cidr string | 限定从网桥子网中分配给容器的 IPv4 地址段 |
| --fixed-cidr-v6 string | 限定分配给容器的 IPv6 地址段 |
| --ip string | 绑定容器端口时使用的默认 IP(默认 0.0.0.0) |
| --ip-forward | 开启 net.ipv4.ip_forward 转发(默认开启) |
| --ip-masq | 开启容器访问外网时的 IP 伪装(默认开启) |
| --iptables | 允许 dockerd 管理 iptables 规则(默认开启) |
| --ipv6 | 开启 IPv6 网络 |
| --mtu int | 容器网络的 MTU(默认 1500) |
| --default-address-pool | 自定义默认网络地址池 |
存储相关选项
| 选项 | 说明 |
| -s, --storage-driver string | 指定存储驱动,如 overlay2 |
| --storage-opt list | 设置存储驱动选项 |
| --data-root string | 持久化数据(镜像、容器等)的根目录(默认 /var/lib/docker) |
| --exec-root string | 存放临时执行状态的目录(默认 /var/run/docker) |
| --userns-remap string | 开启用户命名空间重映射 |
日志与调试选项
| 选项 | 说明 |
| -D, --debug | 开启调试模式 |
| -l, --log-level string | 日志级别(debug、info、warn、error、fatal) |
| --log-driver string | 容器默认日志驱动(默认 json-file) |
| --log-opt map | 日志驱动选项 |
| --raw-logs | 以原始 JSON 格式输出日志,不做格式化 |
运行时相关选项
| 选项 | 说明 |
| --add-runtime list | 注册额外的符合 OCI 规范的运行时 |
| --default-runtime string | 默认运行时(默认 runc) |
| --exec-opt list | 运行时执行选项 |
| --cgroup-parent string | 指定容器的 cgroup 父组 |
| --cpu-rt-period int | 实时调度的周期(微秒) |
| --cpu-rt-runtime int | 一个周期内实时任务的运行时间配额 |
| --default-shm-size bytes | 容器共享内存大小(默认 64M) |
| --default-ulimit ulimit | 容器默认的 ulimit 值 |
| --init | 在容器内使用 init 进程转发信号、回收僵尸进程 |
| --init-path string | docker-init 二进制文件路径 |
| --live-restore | 守护进程重启期间保持容器继续运行 |
| --oom-score-adjust int | 调整守护进程的 OOM 评分 |
| --seccomp-profile string | seccomp 配置文件路径 |
| --selinux-enabled | 开启 SELinux 支持 |
| --shutdown-timeout int | 关闭时的默认超时时间(秒,默认 15) |
| --max-concurrent-downloads int | 每层镜像的最大并发下载数(默认 3) |
| --max-concurrent-uploads int | 每层镜像的最大并发上传数(默认 5) |
| --metrics-addr string | 暴露 Prometheus 指标的监听地址 |
镜像与仓库选项
| 选项 | 说明 |
| --insecure-registry list | 允许访问不安全的(如自签证书的)镜像仓库 |
| --registry-mirror list | 镜像仓库加速地址 |
| --allow-nondistributable-artifacts list | 允许推送/拉取受限分发的制品 |
远程访问与安全选项
| 选项 | 说明 |
| -H, --host list | 监听的套接字,如 unix:///var/run/docker.sock、tcp://0.0.0.0:2375,可指定多个 |
| --api-cors-header string | 为 Engine API 设置 CORS 响应头 |
| --tls | 开启 TLS |
| --tlscacert string | 仅信任该 CA 签发的证书 |
| --tlscert string | 服务端证书路径 |
| --tlskey string | 服务端密钥路径 |
| --tlsverify | 双向认证,校验客户端证书 |
| --authorization-plugin list | 加载授权插件 |
| --group string | docker.sock 的所属组(默认 docker) |
| --icc | 是否允许容器间互联(默认允许) |
| --userland-proxy | 使用用户态代理处理回环流量(默认开启) |
| --userland-proxy-path string | 用户态代理程序路径 |
| --node-generic-resource list | 声明节点通用资源(供 swarm 调度使用) |
其他选项
| 选项 | 说明 |
| -p, --pidfile string | PID 文件路径(默认 /var/run/docker.pid) |
| --config-file string | 守护进程配置文件路径(默认 /etc/docker/daemon.json) |
| --label list | 为守护进程添加键值对标签 |
| --label-file list | 从文件读取标签 |
| --dns list | 容器默认使用的 DNS 服务器 |
| --dns-search list | 容器默认的 DNS 搜索域 |
| --dns-opt list | 容器默认的 DNS 选项 |
| --experimental | 开启实验特性 |
| -v, --version | 打印版本信息并退出 |
旧版本中还提供 --cluster-advertise、--cluster-store、--cluster-store-opt 等用于经典 Swarm 集群的选项,新版本中已经移除。
配置文件
除命令行参数外,dockerd 的绝大多数选项都可以写入配置文件 /etc/docker/daemon.json(可通过 --config-file 指定其他路径),例如:
{
"debug": true,
"data-root": "/data/docker",
"registry-mirrors": ["https://<mirror-host>"],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
注意 JSON 中的键名与命令行选项并不完全一致(例如命令行的 --registry-mirror 对应配置文件中的 registry-mirrors)。修改配置文件后,需要重启守护进程才能生效。
启动示例
一般使用 systemd 管理服务:
$ sudo systemctl start docker
$ sudo systemctl enable docker
调试时可以前台以调试模式启动:
$ sudo dockerd -D
也可以在启动时直接指定存储目录与镜像加速地址:
$ sudo dockerd --data-root /data/docker --registry-mirror=https://<mirror-host>
注意:默认情况下 dockerd 只监听本地的
unix:///var/run/docker.sock。如果通过-H参数开放 TCP 端口(如tcp://0.0.0.0:2375),所有能够访问该端口的客户端都可以控制 Docker,务必配合--tls系列参数启用 TLS 认证。