/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
(默认)、syslog
、journald
、fluentd
等。
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
- 作用:设置日志驱动程序以及日志的相关选项。
- 示例:设置日志驱动为
json-file
,并限制日志文件的大小为 10MB,最多保留 3 个日志文件。
6. storage-driver
此配置项用于设置 Docker 使用的存储驱动。常见的存储驱动包括 overlay2
(推荐)、aufs
、btrfs
、zfs
等。
{
"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"]
}
如何应用配置文件
- 编辑
daemon.json
:
使用文本编辑器编辑/etc/docker/daemon.json
文件,并根据需要添加或修改配置项。sudo nano /etc/docker/daemon.json
- 重新加载 Docker 配置:
修改配置文件后,需要重新启动 Docker 服务才能使配置生效。可以使用以下命令来重启 Docker 服务:sudo systemctl restart docker
- 检查配置是否生效:
使用docker info
命令可以查看 Docker 配置是否已正确应用。docker info
该命令将输出有关 Docker 配置、版本、存储驱动等信息,帮助你确认配置是否生效。
总结
/etc/docker/daemon.json
是 Docker 守护进程的配置文件,可以通过该文件自定义 Docker 守护进程的多种行为。常见的配置包括镜像加速器、存储驱动、日志配置、网络配置等。通过调整这个配置文件,可以优化 Docker 的性能、增强安全性、提高使用体验。
需要注意的是,修改 daemon.json
配置文件后,需要重新启动 Docker 服务才能使更改生效。
发表回复