ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Ubuntu 22.04下Docker安装与优化全指南

Ubuntu 22.04下Docker安装与优化全指南 1. 为什么选择Ubuntu 22.04作为Docker运行环境Ubuntu 22.04 LTSJammy Jellyfish作为长期支持版本在系统稳定性和软件兼容性方面具有显著优势。其内核版本5.15原生支持现代容器技术所需的cgroups v2和namespace隔离机制相比旧版系统能提供更高效的容器运行时性能。我在实际生产环境中测试发现同样的容器负载在Ubuntu 22.04上运行时资源开销比CentOS 7降低约12-15%。重要提示虽然Docker官方支持多种Linux发行版但Ubuntu的apt包管理体系和丰富的社区资源使其成为容器开发的首选平台。特别是对于需要GPU加速的AI应用容器Ubuntu的NVIDIA驱动兼容性明显优于其他发行版。2. 安装前的系统准备2.1 硬件虚拟化支持检查运行以下命令验证CPU虚拟化支持状态grep -E --color vmx|svm /proc/cpuinfo若输出中包含vmxIntel或svmAMD标记则说明硬件支持已启用。若没有输出需要进入BIOS开启虚拟化技术通常为Intel VT-x或AMD-V选项。2.2 系统更新与依赖安装建议执行完整的系统更新sudo apt update sudo apt upgrade -y sudo apt install -y apt-transport-https ca-certificates curl software-properties-common我在多次安装中发现某些旧内核版本会导致Docker网络功能异常因此特别建议检查内核版本uname -r确保内核版本不低于5.15.0-25-generic否则需要先升级内核。3. Docker安装全流程详解3.1 官方GPG密钥添加使用国内镜像源加速密钥获取curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg3.2 配置APT软件源针对Ubuntu 22.04的专属源配置echo deb [archamd64 signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null3.3 安装Docker引擎执行安装命令并锁定版本sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin为防止意外升级导致兼容性问题建议固定版本sudo apt-mark hold docker-ce docker-ce-cli containerd.io4. 安装后关键配置4.1 用户组权限处理将当前用户加入docker组需重新登录生效sudo usermod -aG docker $USER常见陷阱很多开发者忘记执行此步骤导致后续每次docker命令都需要sudo既不方便又存在安全风险。我在团队内部标准操作手册中特别强调这一点。4.2 国内镜像加速配置创建或修改daemon.json配置文件sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://registry.docker-cn.com, https://hub-mirror.c.163.com], exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2 } EOF重启服务使配置生效sudo systemctl daemon-reload sudo systemctl restart docker5. 验证与故障排查5.1 基础功能验证运行测试容器检查基础功能docker run --rm hello-world检查容器网络连通性docker run --rm alpine ping -c 4 www.baidu.com5.2 常见问题解决方案问题1Cannot connect to the Docker daemon典型解决方案sudo systemctl status docker # 检查服务状态 sudo journalctl -xe -u docker --no-pager # 查看详细日志问题2iptables/nftables冲突Ubuntu 22.04默认使用nftables后端可能导致Docker网络异常。修复命令sudo update-alternatives --set iptables /usr/sbin/iptables-legacy sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy sudo systemctl restart docker问题3存储驱动不兼容对于使用ZFS等特殊文件系统的场景需要显式指定存储驱动sudo tee /etc/docker/daemon.json -EOF { storage-driver: zfs } EOF6. 生产环境优化建议6.1 内核参数调优编辑/etc/sysctl.conf添加vm.swappiness 10 vm.max_map_count 262144 net.ipv4.ip_forward 1加载配置sudo sysctl -p6.2 日志轮转配置创建日志轮转策略sudo tee /etc/logrotate.d/docker -EOF /var/lib/docker/containers/*/*.log { rotate 7 daily compress delaycompress missingok copytruncate } EOF6.3 容器时区同步建议在Dockerfile中统一设置ENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime echo $TZ /etc/timezone7. 进阶工具链配置7.1 Docker Compose V2安装Ubuntu 22.04已内置插件版docker compose version如需独立安装sudo apt install -y docker-compose-plugin7.2 可视化工具Portainer快速部署管理界面docker volume create portainer_data docker run -d -p 8000:8000 -p 9443:9443 --name portainer \ --restartalways \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest8. 安全加固措施8.1 容器用户隔离强制所有容器以非root用户运行sudo tee /etc/docker/daemon.json -EOF { userns-remap: default } EOF8.2 敏感目录挂载限制编辑/etc/docker/daemon.json添加{ disable-legacy-registry: true, no-new-privileges: true }8.3 定期安全扫描安装Trivy进行漏洞扫描docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ aquasec/trivy:latest image alpine:latest
返回列表