Skip to main content

Docker daemon.json 配置文件详解

daemon.json 是 Docker 守护进程(dockerd)的主要配置文件,用于控制 Docker 引擎的各种行为和特性。

配置文件位置

  • Linux: /etc/docker/daemon.json
  • Windows: %ProgramData%\docker\config\daemon.json
  • macOS: Docker Desktop 通过 GUI 配置,但底层也使用类似配置文件

常用配置选项

基本配置

  1. 调试和日志

    {
      "debug": true,
      "log-level": "debug",
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      }
    }
    
  2. 存储设置

    {
      "storage-driver": "overlay2",
      "data-root": "/path/to/custom/docker/data"
    }
    

网络配置

  1. DNS 设置

    {
      "dns": ["8.8.8.8", "8.8.4.4"],
      "dns-opts": ["timeout:2", "attempts:2"],
      "dns-search": ["example.com"]
    }
    
  2. IP 和代理

    {
      "bip": "192.168.1.5/24",
      "fixed-cidr": "192.168.1.5/25",
      "default-gateway": "192.168.1.1",
      "mtu": 1500
    }
    

镜像和仓库配置

  1. 镜像加速器

    {
      "registry-mirrors": [
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn"
      ]
    }
    
  2. 私有仓库

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

安全配置

  1. TLS 设置

    {
      "tls": true,
      "tlscacert": "/path/to/ca.pem",
      "tlscert": "/path/to/server-cert.pem",
      "tlskey": "/path/to/server-key.pem",
      "tlsverify": true
    }
    
  2. 用户命名空间

    {
      "userns-remap": "default"
    }
    

资源限制

  1. CPU 和内存
    {
      "cgroup-parent": "/docker-cgroup",
      "default-ulimits": {
        "nofile": {
          "Name": "nofile",
          "Hard": 64000,
          "Soft": 64000
        }
      }
    }
    

配置生效方式

  1. 修改配置文件后需要重启 Docker 服务:

    sudo systemctl restart docker
    
  2. 检查配置是否生效:

    docker info
    

注意事项

  1. JSON 文件必须严格遵守格式,可以使用 JSON 验证工具 检查语法

  2. 某些配置可能需要 Docker 服务停止后才能修改

  3. 不同 Docker 版本支持的配置选项可能不同,请参考官方文档

  4. 可以使用 dockerd --help 查看所有可用的守护进程选项

示例完整配置

{
  "debug": false,
  "log-level": "info",
  "data-root": "/mnt/docker-data",
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
  "insecure-registries": ["registry.example.com:5000"],
  "dns": ["8.8.8.8", "1.1.1.1"],
  "default-ulimits": {
    "nofile": {
      "Name": "nofile",
      "Hard": 65536,
      "Soft": 65536
    }
  },
  "live-restore": true,
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}

通过合理配置 daemon.json 文件,可以优化 Docker 的性能、安全性和可用性,满足不同的使用场景需求。