/etc/docker/daemon.json 配置文件详解

daemon.json 是 Docker 守护进程(dockerd)的配置文件,通常位于 /etc/docker/ 目录中。通过修改该配置文件,可以自定义 Docker 守护进程的行为、网络设置、存储驱动等。

daemon.json 是一个 JSON 格式的文件,用于配置 Docker 守护进程的各项参数。配置文件中的设置会影响到 Docker 引擎的启动和运行行为。

配置文件位置

  • 在 Linux 系统中,配置文件通常位于 /etc/docker/daemon.json
  • 在 Windows 系统中,配置文件可能位于 C:\ProgramData\docker\config\daemon.json

常见的配置项

以下是一些常见的 daemon.json 配置项和它们的作用:

1. registry-mirrors

此配置项用于配置 Docker 镜像的镜像加速器(例如国内的 Docker 镜像源),可以提高镜像拉取的速度。

{
  "registry-mirrors": ["https://hub-mirror.c.163.com"]
}

  • 作用:指定 Docker 拉取镜像时的镜像加速器。
  • 示例:设置一个 Docker 镜像源加速器,使用网易的 Docker 镜像加速。

2. insecure-registries

此配置项用于允许 Docker 访问不安全的(即不使用 HTTPS 的)私有镜像仓库。

{
  "insecure-registries": ["myregistry.com:5000"]
}

  • 作用:允许 Docker 连接到不安全的私有镜像仓库。
  • 示例:配置允许访问 myregistry.com:5000 这个私有仓库。

3. bip

此配置项用于配置 Docker 容器的默认桥接网络的子网 IP 地址范围。

{
  "bip": "192.168.1.5/24"
}

  • 作用:设置 Docker 默认的桥接网络(bridge)的子网 IP 地址范围。
  • 示例:将 Docker 默认桥接网络的 IP 地址段设置为 192.168.1.5/24

4. data-root

此配置项用于指定 Docker 数据存储目录,通常包括镜像、容器、卷等的存储路径。

{
  "data-root": "/mnt/docker-data"
}

  • 作用:设置 Docker 存储数据的根目录。
  • 示例:将 Docker 数据存储目录更改为 /mnt/docker-data

5. log-driver

此配置项用于设置 Docker 容器的日志驱动程序。常见的日志驱动程序包括 json-file(默认)、syslogjournaldfluentd 等。

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

  • 作用:设置日志驱动程序以及日志的相关选项。
  • 示例:设置日志驱动为 json-file,并限制日志文件的大小为 10MB,最多保留 3 个日志文件。

6. storage-driver

此配置项用于设置 Docker 使用的存储驱动。常见的存储驱动包括 overlay2(推荐)、aufsbtrfszfs 等。

{
  "storage-driver": "overlay2"
}

  • 作用:配置 Docker 使用的存储驱动。
  • 示例:设置 Docker 使用 overlay2 存储驱动,这也是 Docker 推荐的默认驱动。

7. shutdown-timeout

此配置项用于设置 Docker 守护进程在关闭容器时的超时时间,单位是秒。

{
  "shutdown-timeout": 30
}

  • 作用:设置 Docker 守护进程在关闭容器时的超时限制。
  • 示例:设置超时时间为 30 秒。

8. debug

此配置项用于启用 Docker 守护进程的调试模式,便于调试问题。

{
  "debug": true
}

  • 作用:启用调试模式,默认值为 false
  • 示例:启用调试模式,便于排查问题。

9. no-new-privileges

此配置项用于设置 Docker 容器是否应该禁用新特权的提升,增加容器的安全性。

{
  "no-new-privileges": true
}

  • 作用:设置是否禁用容器内进程的新特权提升。
  • 示例:禁用容器内进程的新特权提升,增加安全性。

10. exec-opts

此配置项用于配置容器的执行选项,常见的配置有 native.cgroupdriver

{
  "exec-opts": ["native.cgroupdriver=cgroupfs"]
}

  • 作用:设置容器的执行选项。
  • 示例:配置 Docker 使用 cgroupfs 作为 cgroup 驱动。

完整示例

以下是一个包含常见配置项的 daemon.json 配置文件示例:

{
  "registry-mirrors": ["https://hub-mirror.c.163.com"],
  "insecure-registries": ["myregistry.com:5000"],
  "bip": "192.168.1.5/24",
  "data-root": "/mnt/docker-data",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "storage-driver": "overlay2",
  "shutdown-timeout": 30,
  "debug": true,
  "no-new-privileges": true,
  "exec-opts": ["native.cgroupdriver=cgroupfs"]
}

如何应用配置文件

  1. 编辑 daemon.json
    使用文本编辑器编辑 /etc/docker/daemon.json 文件,并根据需要添加或修改配置项。sudo nano /etc/docker/daemon.json
  2. 重新加载 Docker 配置
    修改配置文件后,需要重新启动 Docker 服务才能使配置生效。可以使用以下命令来重启 Docker 服务:sudo systemctl restart docker
  3. 检查配置是否生效
    使用 docker info 命令可以查看 Docker 配置是否已正确应用。docker info 该命令将输出有关 Docker 配置、版本、存储驱动等信息,帮助你确认配置是否生效。

总结

/etc/docker/daemon.json 是 Docker 守护进程的配置文件,可以通过该文件自定义 Docker 守护进程的多种行为。常见的配置包括镜像加速器、存储驱动、日志配置、网络配置等。通过调整这个配置文件,可以优化 Docker 的性能、增强安全性、提高使用体验。

需要注意的是,修改 daemon.json 配置文件后,需要重新启动 Docker 服务才能使更改生效。