首页/云/Docker 容器速查/daemon.json 常用加固项
资源与安全50 条

daemon.json 常用加固项

以配置基线加固守护进程:打开 live-restore 与 no-new-privileges、统一日志轮转、按需关闭默认桥接互通,改完做 JSON 校验再重启。

Docker 容器速查云更新于 2026-10-13

daemon.json 加固是什么

Docker 守护进程的配置写在 daemon.json 里,改动后重启服务生效。加固的常见动作包括:重启守护进程时保持容器运行、禁止容器获得额外权限、统一日志轮转上限、关闭默认桥接网络内的相互通行、限制进程打开的句柄数。这些项大多是一行配置,但会改变容器行为,因此变更应成组评估并留有回滚方案。

基本信息

配置文件位置Linux:/etc/docker/daemon.json;桌面版在设置界面
生效方式修改后重启 docker 服务(桌面版通过界面应用)
常用加固项live-restore、no-new-privileges、log-opts 轮转、icc、default-ulimits
校验方式python3 -m json.tool 校验语法通过后再重启
回滚准备改动前备份原文件,并准备好恢复命令
作用范围守护进程级,影响本机所有容器

典型使用场景

  • 升级或重启 Docker 时希望业务容器不中断
  • 限制容器进程提权,降低被攻破后的影响面
  • 统一日志轮转策略,避免日志把磁盘写满
  • 隔离默认桥接网络内的容器互访,收紧横向可达路径
  • 给所有容器设置统一的句柄数上限,避免个别服务耗尽系统资源

配置示例

配置示例
{
  "live-restore": true,
  "no-new-privileges": true,
  "log-driver": "json-file",
  "log-opts": { "max-size": "10m", "max-file": "3" },
  "icc": false,
  "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 65536, "Soft": 65536 } }
}

应用与确认

应用与确认
# 改前备份,改后先校验 JSON 语法再重启
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
sudo python3 -m json.tool /etc/docker/daemon.json > /dev/null && echo json-ok
sudo systemctl restart docker

# 确认配置已加载
docker info | grep -E 'Live Restore|Logging Driver'

# 检查已有容器状态,确认重启过程未造成中断
docker ps --format 'table {{.Names}}\t{{.Status}}'

常用项影响对照

配置项作用变更影响
live-restore守护进程重启时保持容器运行升级维护窗口更安全
no-new-privileges禁止容器进程获得额外权限部分需要提权的镜像行为受限
log-opts限制单个日志文件大小与数量历史日志会被轮转删除
icc关闭默认桥接网络内容器互通依赖该网络的旧服务可能断链
default-ulimits统一句柄数等系统限制过高会削弱资源保护
关闭默认桥接互通只影响默认网络,自定义网络不受影响;排查改配置后服务断链时,先确认相关容器接在哪张网络上。
daemon.json 语法错误会导致守护进程无法启动,容器管理操作全部不可用。改动前备份、改后校验、窗口期通知,这三步不能省。

易错点

  • JSON 写坏会让 Docker 无法启动,改动前必须保留备份与可执行的回滚步骤
  • 关闭默认桥接互通后,仅靠默认网络互访的服务会突然断链,变更前先核对网络归属
  • 日志轮转一旦启用,超出保留数量的历史日志会被删除,合规留存需求要另行处理
  • no-new-privileges 生效后部分依赖提权的镜像行为异常,上线前需回归验证

数据来源与参考

  • Docker 官方文档:daemon.json 配置参考(docs.docker.com/engine/reference/commandline/dockerd)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌