一、镜像优化:减小体积与构建时间
FROM ... AS builder分离构建环境与运行环境,仅将编译后的产物(如二进制文件、静态资源)复制到最终镜像,避免包含编译工具链、依赖缓存等无用内容。RUN指令(如RUN apt-get update && apt-get install -y package1 package2),减少镜像层数;使用.dockerignore文件排除开发临时文件(如node_modules、.git)、日志文件等无关内容,避免其进入镜像构建上下文。二、网络性能优化:减少延迟与瓶颈
--network host)**适合低延迟需求(如数据库、高频交易应用),容器直接共享主机网络堆栈,绕过NAT;**覆盖网络(Overlay)**适合多主机分布式系统(如Kubernetes集群),支持跨主机容器通信。/etc/sysctl.conf文件,优化以下参数提升网络IO性能:vm.dirty_ratio=10(脏页比例达到10%时触发写入磁盘)、vm.swappiness=10(减少内存交换,优先使用物理内存)、net.core.somaxconn=4096(增加TCP连接队列长度,避免连接拒绝)。三、系统配置优化:提升底层性能
overlay2存储驱动性能较好,适合大多数场景(支持快照、写时复制),需确保/etc/docker/daemon.json中配置"storage-driver": "overlay2"(默认已启用)。sysctl命令或修改/etc/sysctl.conf优化磁盘与内存管理,例如vm.dirty_background_ratio=5(后台写入脏页的阈值)、vm.overcommit_memory=1(允许内存超额分配,适合内存密集型应用)。/)空间不足,可将Docker数据目录(默认/var/lib/docker)迁移至大容量分区(如/mnt/docker),修改/etc/docker/daemon.json中的"data-root"字段,并重启Docker服务。四、资源限制:避免资源争抢
--cpus参数限制容器使用的CPU核心数(如docker run --cpus=2 ubuntu限制为2核),或通过--cpu-shares设置CPU份额(相对权重,适合多容器竞争场景);使用Docker Compose时,在deploy.resources.limits中配置cpus字段。--memory(或-m)参数限制容器最大内存使用量(如docker run -m 512m ubuntu限制为512MB),避免容器占用过多内存导致系统OOM;同时设置--memory-swap(内存+交换空间总和,如--memory=512m --memory-swap=1g)防止内存溢出。--blkio-weight设置磁盘I/O权重(范围1-10000,数值越大优先级越高),或--device-read-bps/--device-write-bps限制设备读写速度(如--device-read-bps=/dev/sda:1mb限制读取速度为1MB/s);通过--network模式或第三方工具(如tc)限制网络带宽。五、日常维护:保持系统高效
docker system prune命令清理未使用的镜像、容器、卷和网络(添加-a参数可清理未使用的镜像,-f强制删除无需确认);使用docker system df查看Docker资源占用情况,及时处理占用较大的镜像或容器。docker stats命令实时监控容器的CPU、内存、网络IO等资源使用情况;或使用第三方工具(如Prometheus+Grafana、cAdvisor)搭建可视化监控系统,及时发现性能瓶颈(如高CPU占用、内存泄漏)。