Docker 高级配置:修改数据目录、日志限制、镜像源与网络配置

Docker 默认配置在生产环境中可能不满足需求,例如默认数据目录可能空间不足、日志文件可能无限增长、拉取镜像速度慢、默认 IP 段可能与现有网络冲突等。本文将详细介绍如何通过配置文件来修改 Docker 的这些默认行为,以适应不同的生产环境需求。

1. 配置文件位置

Docker 的主要配置文件位于 /etc/docker/daemon.json。如果该文件不存在,需要手动创建。修改此文件后,需要重启 Docker 服务才能使配置生效。

2. 修改 Docker 数据目录

默认情况下,Docker 将所有数据(镜像、容器、卷等)存储在 /var/lib/docker 目录下。如果该分区空间有限,可以将其修改到其他有足够空间的目录。

配置方法

/etc/docker/daemon.json 中添加 data-root 字段:

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

此配置将 Docker 的数据目录修改为 /data/docker。确保该目录存在且有足够权限。

3. 限制容器日志大小

Docker 默认使用 json-file 日志驱动,日志文件可能会无限增长,占用大量磁盘空间。可以通过配置限制单个日志文件的大小和保留的日志文件数量。

配置方法

/etc/docker/daemon.json 中添加 log-driverlog-opts 字段:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "1"
  }
}

此配置将单个日志文件的最大大小限制为 50MB,最多保留 1 个历史日志文件(即总共最多保留 2 个文件:当前文件和一个旧文件)。

4. 配置镜像加速器(Registry Mirrors)

从 Docker Hub 拉取镜像时,由于网络原因,速度可能较慢。配置镜像加速器可以显著提升拉取速度。

配置方法

/etc/docker/daemon.json 中添加 registry-mirrors 字段:

{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ]
}

可以配置多个镜像源,Docker 会按顺序尝试。

5. 修改 Docker 默认 IP 段

Docker 默认使用 172.17.0.0/16 网段创建 Bridge 网络。如果此网段与现有网络冲突,需要修改为不冲突的网段。

配置方法

/etc/docker/daemon.json 中添加 default-address-pools 字段:

{
  "default-address-pools": [
    {
      "base": "172.30.0.0/16",
      "size": 24
    },
    {
      "base": "172.31.0.0/16",
      "size": 24
    }
  ]
}

此配置将 Docker 的默认 IP 池设置为 172.30.0.0/24172.31.0.0/24 等网段。

6. 配置不安全的镜像源(Insecure Registries)

在企业内部,可能会有自建的 HTTP 镜像仓库。Docker 默认只信任 HTTPS 的镜像源,需要将 HTTP 源配置为不安全的镜像源才能使用。

配置方法

/etc/docker/daemon.json 中添加 insecure-registries 字段:

{
  "insecure-registries": [
    "10.96.183.181:9082"
  ]
}

此配置将 10.96.183.181:9082 配置为不安全的镜像源,允许从该地址拉取镜像。

7. 完整配置示例

以下是一个综合了上述所有配置的完整 daemon.json 示例:

{
  "data-root": "/data/docker",
  "default-address-pools": [
    {
      "base": "172.30.0.0/16",
      "size": 24
    },
    {
      "base": "172.31.0.0/16",
      "size": 24
    }
  ],
  "insecure-registries": [
    "10.96.183.181:9082"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-file": "1",
    "max-size": "50m"
  },
  "registry-mirrors": [
    "http://10.96.183.181:9082"
  ]
}

8. 应用配置

修改完 /etc/docker/daemon.json 文件后,需要重启 Docker 服务:

sudo systemctl restart docker

或者在某些系统上:

sudo service docker restart

重启后,新的配置将生效。

9. 验证配置

可以通过以下命令验证配置是否生效:

  • 检查 Docker 信息:docker info
  • 检查 Docker 版本和配置:docker version
  • 查看 Docker 系统事件:docker system events

总结

通过修改 /etc/docker/daemon.json 配置文件,可以灵活地调整 Docker 的各种行为,以适应不同的生产环境需求。本文介绍了修改数据目录、限制日志大小、配置镜像加速器、修改默认 IP 段和配置不安全镜像源的方法。合理配置这些参数,可以提升 Docker 的性能和安全性。