在 Debian 上运行 Docker 时,优化性能通常从宿主机系统、Docker daemon 配置、镜像与容器配置、存储与网络几个方面入手。下面按实用优先级给你一套优化建议。
Docker 依赖 Linux 内核特性(cgroups、overlayfs 等):
uname -a
建议使用 Debian 11+ / 12,内核 5.x 以上。
Swap 会严重影响容器性能:
sudo swapoff -a
并注释 /etc/fstab 中的 swap 行。
# 提高文件句柄数
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
# 网络优化
cat >> /etc/sysctl.conf <<EOF
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
vm.swappiness = 10
EOF
sysctl -p
docker info | grep Storage
如果不是 overlay2,修改:
# /etc/docker/daemon.json
{
"storage-driver": "overlay2"
}
避免日志撑爆磁盘:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
重启:
systemctl restart docker
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com"
]
}
docker run -d \
--memory=512m \
--cpus=1 \
--restart=unless-stopped \
nginx
--init防止僵尸进程:
docker run -d --init nginx
除非必要,不要用:
--privileged
FROM debian:12-slim
FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN go build -o app
FROM debian:12-slim
COPY --from=build /app/app /app
CMD ["/app"]
RUN apt-get update && apt-get install -y \
curl \
&& rm -rf /var/lib/apt/lists/*
Docker 数据目录:
docker info | grep "Docker Root Dir"
可迁移到 SSD:
systemctl stop docker
rsync -avz /var/lib/docker /data/docker
ln -s /data/docker /var/lib/docker
systemctl start docker
docker system prune -a
docker run --network host nginx
端口映射越多,iptables 越慢。
docker stats
htop
iotop
✅ 关 swap
✅ overlay2
✅ 限制日志
✅ 限制 CPU / 内存
✅ 精简镜像
✅ SSD + 定期清理
如果你有具体场景(Web、数据库、CI、K8s),我可以给你更针对性的优化方案。