本系列共 3 篇。本文为第 1 篇,聚焦:daemon.json核心配置、存储驱动最佳实践、网络配置优化。

daemon.json核心配置

我的生产环境配置模板

{
  "registry-mirrors": [
    "https://docker.rainbond.cc",
    "https://docker.1ms.run",
    "https://docker.m.daocloud.io"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3",
    "compress": "true"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "default-ulimits": {
    "nofile": {
      "Name": "nofile",
      "Hard": 64000,
      "Soft": 64000
    },
    "nproc": {
      "Name": "nproc",
      "Hard": 8192,
      "Soft": 8192
    }
  },
  "live-restore": true,
  "userland-proxy": false,
  "icc": false,
  "default-address-pools": [
    {
      "base": "172.80.0.0/16",
      "size": 24
    }
  ],
  "dns": ["223.5.5.5", "8.8.8.8"],
  "max-concurrent-downloads": 10,
  "max-concurrent-uploads": 5,
  "metrics-addr": "127.0.0.1:9323",
  "experimental": false,
  "features": {
    "buildkit": true
  }
}

配置项深度解析

1. 镜像加速器配置(必改)
"registry-mirrors": [
  "https://docker.rainbond.cc",
  "https://docker.1ms.run",
  "https://docker.m.daocloud.io"
]
  • 配置多个镜像源,Docker会自动failover
  • 定期检查镜像源可用性
  • 企业内网建议搭建 Harbor
2. 日志配置(必改)
"log-driver": "json-file",
"log-opts": {
  "max-size": "100m",
  "max-file": "3",
  "compress": "true"
}
3. 存储驱动配置(性能关键)
"storage-driver": "overlay2",
"storage-opts": [
  "overlay2.override_kernel_check=true"
]
4. Cgroup驱动配置(Kubernetes必改)
"exec-opts": ["native.cgroupdriver=systemd"]
5. 文件描述符限制(高并发必改)
"default-ulimits": {
  "nofile": {
    "Name": "nofile",
    "Hard": 64000,
    "Soft": 64000
  },
  "nproc": {
    "Name": "nproc",
    "Hard": 8192,
    "Soft": 8192
  }
}
6. live-restore配置(生产环境必开)
"live-restore": true
7. 网络配置优化
"userland-proxy": false,
"icc": false,
"default-address-pools": [
  {
    "base": "172.80.0.0/16",
    "size": 24
  }
],
"dns": ["223.5.5.5", "8.8.8.8"]
8. 并发下载优化
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5
9. 监控指标开启
"metrics-addr": "127.0.0.1:9323"

存储驱动最佳实践

overlay2深度配置

磁盘配额限制(防止容器占满磁盘)
mkfs.xfs -n ftype=1 /dev/sdb1
mount -o pquota /dev/sdb1 /var/lib/docker

# daemon.json
{
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true",
    "overlay2.size=10G"
  ]
}

systemctl restart docker
docker run --storage-opt size=5G nginx
清理策略
#!/bin/bash
# /usr/local/bin/docker-cleanup.sh

docker container prune -f --filter "until=72h"
docker image prune -a -f --filter "until=168h"
docker volume prune -f --filter "until=168h"
docker builder prune -a -f --filter "until=168h"

echo "[$(date)] Docker cleanup completed" >> /var/log/docker-cleanup.log
0 3 * * * /usr/local/bin/docker-cleanup.sh

存储性能监控

#!/bin/bash
docker system df
docker system df -v

USAGE=$(df /var/lib/docker | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $USAGE -gt 80 ]; then
    echo "警告:Docker存储使用率 ${USAGE}%"
fi

网络配置优化

自定义网络最佳实践

docker network create \
  --driver bridge \
  --subnet 172.80.1.0/24 \
  --gateway 172.80.1.1 \
  --opt com.docker.network.bridge.name=docker-frontend \
  frontend-net

docker network create \
  --driver bridge \
  --subnet 172.80.2.0/24 \
  --gateway 172.80.2.1 \
  --opt com.docker.network.bridge.name=docker-backend \
  backend-net

docker network create \
  --driver bridge \
  --subnet 172.80.3.0/24 \
  --gateway 172.80.3.1 \
  --internal \
  database-net

MTU设置

ip link show eth0

docker network create \
  --driver bridge \
  --opt com.docker.network.driver.mtu=1450 \
  my-net

网络性能测试

docker run -d --name server --network my-net nginx
docker run -it --name client --network my-net alpine sh
# client中执行
apk add curl
time curl http://server
docker run -d --name iperf-server --network my-net networkstatic/iperf3 -s
docker run --rm --network my-net networkstatic/iperf3 -c iperf-server

端口映射优化

docker run -p 8000-8100:8000 myapp
docker run -P myapp

下篇预告

第 2 篇将继续:资源限制策略、日志管理方案、安全加固配置。

更详细内容

个人博客:https://itinstall.dev
公众号:IT安装手册

更多推荐