温馨提示×

centos docker怎样优化

小樊
50
2026-10-23 08:38:14
栏目: 智能运维

在 CentOS 上优化 Docker,可以从系统层、Docker 自身配置、镜像与容器、存储与网络几个方面来做。下面给你一套比较实用、可落地的优化方案。


一、系统层优化(CentOS)

1. 使用较新的 CentOS 版本

  • 推荐使用 CentOS 7.9+ / CentOS Stream 8/9
  • 内核建议 ≥ 3.10(CentOS 7) 或 4.x/5.x(Stream)
uname -a

2. 关闭无用服务

systemctl disable firewalld --now   # 若用云安全组可关
systemctl disable postfix

⚠️ 生产环境谨慎关防火墙,可用 iptables/nftables 管理

3. 调整内核参数

编辑 /etc/sysctl.conf:

net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
vm.swappiness = 10
sysctl -p

4. 文件描述符限制

/etc/security/limits.conf:

* soft nofile 65535
* hard nofile 65535

二、Docker 安装与版本优化

1. 使用官方 Docker CE(不要用 yum 自带旧版)

yum remove docker docker-client docker-common
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io

2. 使用 overlay2 存储驱动(CentOS 7+ 默认)

docker info | grep Storage

如果不是 overlay2:

{
  "storage-driver": "overlay2"
}

三、Docker daemon 优化配置

编辑 /etc/docker/daemon.json:

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "live-restore": true,
  "default-ulimits": {
    "nofile": {
      "Name": "nofile",
      "Hard": 65535,
      "Soft": 65535
    }
  }
}

重启:

systemctl daemon-reload
systemctl restart docker

✅ live-restore:Docker 重启不影响运行中的容器


四、镜像优化

1. 使用轻量基础镜像

  • ✅ alpine
  • ✅ distroless
  • ❌ centos / ubuntu 大镜像(除非必须)

2. 多阶段构建

FROM golang:1.21 AS build
WORKDIR /app
COPY . .
RUN go build -o app

FROM alpine
COPY --from=build /app/app /app
CMD ["/app"]

3. 清理缓存

RUN yum clean all && rm -rf /var/cache/yum

五、容器运行优化

1. 限制资源

docker run -d \
  --name app \
  --memory=512m \
  --cpus=1 \
  nginx

2. 使用 restart 策略

--restart=unless-stopped

3. 避免特权模式

--cap-drop ALL

六、存储优化(非常重要)

1. Docker 数据目录迁移到独立磁盘

systemctl stop docker
mv /var/lib/docker /data/docker
ln -s /data/docker /var/lib/docker
systemctl start docker

2. 定期清理

docker system prune -a

七、网络优化

1. 使用自定义网络

docker network create mynet

2. 避免默认 bridge 的 DNS 慢问题

docker run --network mynet

八、监控与排错

docker stats
docker logs -f container
journalctl -u docker

九、常见性能问题速查

问题 原因 解决
容器卡顿 内存限制 加 --memory
磁盘爆满 日志无限 max-size
启动慢 镜像大 多阶段构建
网络慢 默认 bridge 自定义网络

如果你愿意,可以告诉我:

  • CentOS 版本
  • Docker 用途(Web / 微服务 / 数据库)
  • 是否上 Kubernetes

我可以给你针对性最优配置方案。

0 踩