Docker 宿主机的配置分配
发布时间:2026-05-08 22:08       
更新时间:2026-05-09 10:19
一台 Docker 宿主机能装多少容器,答案不在机器大小,在配额怎么分。配额管理做得好,八核 16G 的机器能稳稳跑十几个服务;不做配额,一个失控的容器就能拖垮全机。
一、配额总和留余量
每个容器用 --memory 和 --cpus 限定资源:
docker run -d --name web --memory=2g --cpus=1.5 nginx
所有容器的配额加起来,建议不超过机器资源的八成,剩下的留给宿主系统、日志和突发。配额数值按压测后的真实用量定,拍脑袋设的限额往往和实际差好几倍。配额不是限制性能,是防止某个容器吃光内存后引发连锁的 OOM(内存溢出杀进程),把没出事的容器一起拖下水。定时任务类的容器还要加重启策略和运行超时上限,避免反复拉起白耗资源。
二、存储驱动与数据卷
现在的主流存储驱动是 overlay2,较新的 CentOS 和 Ubuntu 默认就是它,装完用 docker info 确认一眼。数据别写进容器层,数据库这类有状态服务一律用 -v 挂载到宿主机目录或独立数据盘,重建容器时数据不丢。挂载目录的权限按容器内运行的用户对齐,别什么都用 root 跑,能用非 root 就用非 root。
三、镜像清理
Docker 的磁盘杀手是悬空镜像和停止的容器。docker system df 先看占用,再定期清理:
docker system prune -af --volumes
生产环境慎用 --volumes 参数,先确认没有容器还在用那些卷。配合 crontab 每周执行一次,系统盘就不会莫名变满。容器用 --label 标注用途和负责人,清理时按标签过滤,误伤的概率小得多。构建镜像时用多阶段构建加 .dockerignore,镜像体积能减一大半,拉取和部署都快。
四、机型建议
容器密度高的场景内存优先,顺云的高防云服务器 S4-8G 适合跑中小规模的容器组,数据多的业务加挂数据盘。一台机器上别混跑生产业务和来路不明的镜像,隔离等级不同。上线后开一个 docker stats 终端盯半小时,把各容器的真实用量和配额对一遍,再决定往哪个方向调整。