1. Ubuntu系统下Docker引擎的完整配置指南在Linux环境下配置Docker是开发者必备的基础技能之一。作为最流行的容器化平台Docker在Ubuntu系统上的部署涉及多个关键环节从基础环境准备到网络调优都需要特别注意。我在实际运维工作中发现90%的Docker使用问题都源于初始配置不当。1.1 系统环境准备首先确保你的Ubuntu系统版本符合Docker官方要求。目前主流支持的LTS版本包括Ubuntu Jammy 22.04 (LTS)Ubuntu Focal 20.04 (LTS)执行以下命令更新系统基础环境sudo apt update sudo apt upgrade -y sudo apt install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release重要提示生产环境强烈建议使用LTS版本非LTS版本可能遇到兼容性问题1.2 Docker官方仓库配置Docker官方推荐通过仓库安装而非直接下载deb包这便于后续维护更新。添加Docker GPG密钥和稳定版仓库curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null2. Docker引擎安装与验证2.1 安装最新Docker CE更新apt索引后安装Docker社区版sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io安装完成后检查服务状态sudo systemctl status docker正常运行的输出应包含active (running)状态标识。如果服务未启动使用以下命令手动启动sudo systemctl start docker sudo systemctl enable docker2.2 非root用户权限配置默认情况下Docker需要sudo权限才能执行命令。将当前用户加入docker用户组可避免每次输入sudosudo usermod -aG docker $USER newgrp docker # 立即生效无需重新登录验证普通用户权限docker run hello-world成功运行表示基础安装完成系统会下载测试镜像并输出欢迎信息。3. Docker网络代理配置详解在企业网络环境或特殊网络条件下Docker需要配置代理才能正常拉取镜像。这涉及两个层面的配置3.1 Docker守护进程代理编辑或创建服务配置文件sudo mkdir -p /etc/systemd/system/docker.service.d sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf添加以下内容根据实际网络环境替换代理地址[Service] EnvironmentHTTP_PROXYhttp://proxy.example.com:8080/ EnvironmentHTTPS_PROXYhttp://proxy.example.com:8080/ EnvironmentNO_PROXYlocalhost,127.0.0.1,.internal使配置生效sudo systemctl daemon-reload sudo systemctl restart docker验证代理是否生效systemctl show --propertyEnvironment docker3.2 容器运行时代理对于容器内部访问外部网络的需求需要在运行容器时传递环境变量docker run -e HTTP_PROXYhttp://proxy.example.com:8080 \ -e HTTPS_PROXYhttp://proxy.example.com:8080 \ -e NO_PROXYlocalhost,127.0.0.1 \ your-image4. Docker镜像加速配置国内用户访问Docker Hub速度较慢建议配置镜像加速器。主流云服务商提供的加速地址服务商加速地址阿里云https:// .mirror.aliyuncs.com腾讯云https://mirror.ccs.tencentyun.com华为云https:// .swr.myhuaweicloud.com配置方法sudo mkdir -p /etc/docker sudo nano /etc/docker/daemon.json添加内容以阿里云为例{ registry-mirrors: [https://your-id.mirror.aliyuncs.com] }重启服务使配置生效sudo systemctl restart docker5. 常见问题排查与优化5.1 存储驱动选择查看当前存储驱动docker info | grep Storage Driver对于Ubuntu系统推荐使用overlay2驱动。如果显示为aufs可修改配置{ storage-driver: overlay2 }5.2 磁盘空间管理Docker会持续占用磁盘空间需要定期清理# 删除所有停止的容器 docker container prune # 删除所有未被使用的镜像 docker image prune -a # 删除构建缓存 docker builder prune设置自动清理systemd版本≥240的系统sudo nano /etc/docker/daemon.json添加{ features: { buildkit: true }, builder: { gc: { enabled: true, defaultKeepStorage: 20GB } } }5.3 容器时区同步默认容器使用UTC时区调整为本地时区docker run -e TZAsia/Shanghai your-image或者通过挂载本地时间文件docker run -v /etc/localtime:/etc/localtime:ro your-image6. 高级配置技巧6.1 日志轮转配置防止Docker日志文件无限增长sudo nano /etc/docker/daemon.json添加配置{ log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } }6.2 内核参数调优对于高负载环境建议调整内核参数sudo nano /etc/sysctl.conf添加# 增加最大文件描述符数量 fs.file-max 1000000 # 增加网络缓冲区 net.core.rmem_max 16777216 net.core.wmem_max 16777216应用修改sudo sysctl -p6.3 安全加固措施限制容器能力减少攻击面docker run --cap-drop ALL --cap-add NET_BIND_SERVICE your-image启用用户命名空间隔离sudo nano /etc/docker/daemon.json添加{ userns-remap: default }7. 生产环境最佳实践经过多年运维经验总结以下配置方案在稳定性与性能之间取得了良好平衡资源限制所有容器必须设置内存和CPU限制docker run -m 512m --cpus1 your-image健康检查为服务类容器添加健康检查HEALTHCHECK --interval30s --timeout3s \ CMD curl -f http://localhost/ || exit 1日志收集建议使用ELK或Fluentd集中管理日志监控报警配置Prometheus监控关键指标备份策略定期备份以下目录/var/lib/docker/volumes/ (数据卷)/etc/docker/ (配置文件)我在实际部署中发现合理配置的Docker环境可以降低30%以上的运维工作量。特别是在微服务架构下良好的基础配置能为后续的容器编排打下坚实基础。
阅读完成 · 觉得有帮助?