Ubuntu上Docker部署最佳实践
sudo apt update && sudo apt upgrade -y),确保内核及依赖包兼容Docker;优先选择Ubuntu Server LTS版本(如22.04),避免桌面版系统(资源占用高、稳定性不足)。curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh),避免通过apt安装旧版本;安装后启动服务并设置开机自启(sudo systemctl enable --now docker)。docker用户组(sudo usermod -aG docker $USER),注销后重新登录,避免每次使用Docker命令都需要sudo,减少误操作风险。ubuntu:slim(去除非必要组件)或alpine(基于 musl libc 和 busybox,体积更小)作为基础镜像,显著减少镜像大小(如ubuntu:slim约70MB,alpine约5MB)。FROM ... AS builder定义构建阶段(安装编译工具、依赖),FROM ...定义运行阶段(仅复制构建产物),避免将编译工具、临时文件打包到最终镜像。例如Python应用可将pip install放在构建阶段,运行阶段仅复制requirements.txt和代码。RUN命令(减少镜像层数,如RUN apt-get update && apt-get install -y package1 package2 && rm -rf /var/lib/apt/lists/*);安装完成后清理缓存(apt-get clean、rm -rf /var/lib/apt/lists/*),避免无用文件占用空间。node_modules、.git、*.log),减少镜像构建时的传输量和处理时间。--cpus)和内存(--memory)限制(如docker run -d --name app --cpus 0.5 --memory 512m nginx),避免单个容器占用过多系统资源,导致服务器不稳定。-v参数挂载宿主机目录(如docker run -d -v /home/data:/app/data nginx)或命名卷(docker volume create mydata),确保容器删除后数据不会丢失。docker logs -f <container_id>实时查看容器日志;结合logrotate工具定期清理日志文件,避免日志占用过多磁盘空间。/etc/sysctl.conf文件,优化磁盘和网络IO性能(如vm.dirty_ratio = 10降低脏页刷新频率,vm.swappiness = 10减少内存交换);调整后执行sysctl -p使配置生效。overlay2存储驱动(性能最优、兼容性好),无需手动修改(可通过docker info查看当前驱动)。docker stats命令实时监控容器资源使用情况(CPU、内存、网络);结合top、htop等工具监控宿主机资源,及时发现性能瓶颈。sudo apt update && sudo apt upgrade docker-ce docker-ce-cli containerd.io)。docker scan命令(Docker内置)或第三方工具(如Trivy、Clair)扫描镜像漏洞,避免将存在安全风险的镜像部署到生产环境。root用户运行容器(在Dockerfile中使用USER指令指定非root用户,如USER 1000);限制容器网络访问(如使用--network none禁用网络,或通过iptables配置防火墙规则)。docker-compose.yml文件定义多容器应用(如前端、后端、数据库),实现一键启动(docker-compose up -d)、停止(docker-compose down)和管理;支持环境变量(environment字段)、卷挂载(volumes字段),简化复杂应用的部署流程。