一、镜像优化:减小体积与构建效率
FROM
指令分离构建环境与运行环境,将编译工具、中间文件保留在构建阶段,仅将必要的可执行文件或依赖复制到最终镜像,例如Go应用可使用CGO_ENABLED=0
生成静态二进制文件,避免携带运行时环境。RUN
指令(如RUN apt-get update && apt-get install -y package1 package2
),减少镜像层数;使用.dockerignore
文件排除不必要的文件(如node_modules
、.git
、临时文件),避免其进入镜像构建上下文。二、网络性能优化:提升通信效率
--network host
)**适合低延迟需求(如数据库、高频交易应用),容器直接共享主机网络堆栈,避免NAT带来的性能损耗;**覆盖网络(Overlay)**适合多主机分布式系统(如Kubernetes集群),支持跨主机容器通信。/etc/sysctl.conf
文件优化网络性能,例如增加net.core.somaxconn
(监听队列长度,默认128,可调整为1024)提升TCP连接处理能力;降低vm.swappiness
(交换分区使用倾向,默认60,可调整为10以下)减少磁盘交换,提升内存访问速度。三、系统配置优化:强化底层支撑
overlay2
存储驱动性能较好,适合大多数场景(支持快照、写时复制),需确保/etc/docker/daemon.json
中配置"storage-driver": "overlay2"
(Docker 18.06及以上版本默认使用)。sysctl
命令或修改/etc/sysctl.conf
优化系统性能,例如增加vm.dirty_ratio
(脏页比例,默认20%,可调整为10)减少磁盘写入频率;调整fs.file-max
(系统最大文件描述符数,默认约100万,可根据容器数量增加)避免文件描述符耗尽。docker system prune
命令清理未使用的镜像、容器、卷和网络(需谨慎使用,避免删除正在运行的容器);使用docker system df
命令查看Docker磁盘空间占用,及时处理占用较大的资源(如旧镜像、日志文件)。/var/lib/docker
)移动到其他分区(如/mnt/docker
),修改/etc/docker/daemon.json
中的"data-root"
字段,或在启动Docker服务时通过-g
参数指定新路径。四、资源限制:防止资源耗尽
--cpus
参数限制容器使用的CPU核心数(如docker run -it --cpus=1 ubuntu
限制为1个核心);或通过--cpu-shares
参数设置CPU份额(默认1024,数值越大,CPU时间分配越多),适用于多容器竞争CPU资源的场景。--memory
(或-m
)参数设置容器最大内存使用量(如docker run -it -m 512m ubuntu
限制为512MB);配合--memory-swap
参数设置内存+交换空间的总限制(如--memory=512m --memory-swap=1g
,表示容器最多使用512MB内存,交换空间最多使用512MB),避免容器占用过多内存导致系统OOM(Out of Memory)。--device-read-bps
和--device-write-bps
参数限制容器对设备的读写速度(如docker run -it --device-read-bps=/dev/sda:1mb --device-write-bps=/dev/sda:1mb ubuntu
限制磁盘读写速度为1MB/s),避免单个容器占用过多磁盘IO影响其他容器。tc
命令)实现,例如使用tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
限制eth0网卡的带宽为1Mbps。五、监控与调优:持续优化性能
docker stats
命令实时查看容器的CPU、内存、网络IO、磁盘IO等资源使用情况(如docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"
格式化输出),及时发现资源瓶颈(如CPU使用率持续超过80%)。