1. 为什么你需要这份Docker全平台安装指南在云计算和微服务架构成为主流的今天Docker已经成为开发者必备的核心技能。但不同操作系统下的安装过程差异巨大新手常会在环境配置环节浪费数小时甚至数天时间。我见过太多人在Windows家庭版上反复尝试Docker Desktop无果或者在Linux系统上被各种依赖问题卡住。这份指南将覆盖三大主流平台Ubuntu/CentOS/Windows 11的完整安装流程特别针对以下痛点提供解决方案Windows家庭版缺乏Hyper-V支持时的替代方案Linux系统中常见的依赖冲突和权限问题不同Docker版本CE/EE的选择策略国内网络环境下的镜像加速配置重要提示所有操作命令都经过实际环境验证文中标注的避坑点均来自笔者和团队多年积累的真实踩坑记录。2. Ubuntu系统Docker安装全流程2.1 环境准备与依赖检查Ubuntu作为最流行的Linux发行版之一是运行Docker的理想环境。但不同版本如18.04 LTS与22.04 LTS的安装细节存在差异# 首先确认系统架构和版本 lsb_release -a uname -m # 确认是x86_64还是arm架构常见问题1旧版本Ubuntu如16.04已不再受官方支持建议至少升级到20.04 LTS。如果必须使用旧版需要手动添加遗留仓库# 仅适用于16.04等过期版本 sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu xenial stable2.2 官方推荐安装方式以下是经过优化的安装流程包含国内用户专属加速配置# 1. 卸载旧版本如有 sudo apt-get remove docker docker-engine docker.io containerd runc # 2. 安装依赖工具 sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release # 3. 添加官方GPG密钥使用国内镜像加速 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 4. 设置稳定版仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 5. 安装Docker引擎 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # 6. 验证安装 sudo docker run hello-world避坑点如果遇到Could not connect to Docker daemon错误通常是因为当前用户不在docker组。解决方法sudo usermod -aG docker $USER newgrp docker # 立即生效无需重启2.3 生产环境关键配置对于需要长期运行的服务器建议进行以下加固配置日志轮转配置防止日志爆满磁盘sudo tee /etc/docker/daemon.json -EOF { log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } } EOF存储驱动优化根据文件系统选择# 查看当前存储驱动 docker info | grep Storage Driver # 推荐配置对于ext4文件系统 sudo tee -a /etc/docker/daemon.json -EOF { storage-driver: overlay2 } EOF重启服务使配置生效sudo systemctl restart docker sudo systemctl enable docker3. CentOS系统Docker安装详解3.1 CentOS 7与8/9的差异处理CentOS 7和CentOS 8/9在软件包管理上有显著不同。特别提醒CentOS 8已于2021年底停止维护建议迁移到AlmaLinux或Rocky Linux。对于CentOS 7用户# 移除旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 安装必要工具 sudo yum install -y yum-utils # 设置仓库阿里云镜像 sudo yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装Docker sudo yum install docker-ce docker-ce-cli containerd.io对于CentOS 8/9及兼容系统# 使用dnf替代yum sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine sudo dnf -y install dnf-plugins-core sudo dnf config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io3.2 防火墙与SELinux配置CentOS默认开启的SELinux和firewalld会导致容器网络访问异常# 查看SELinux状态 getenforce # 临时关闭 setenforce 0 # 永久关闭生产环境建议保持开启并正确配置策略 sudo sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config # 防火墙放行Docker sudo firewall-cmd --permanent --zonepublic --add-masquerade sudo firewall-cmd --permanent --zonepublic --add-port2376/tcp sudo firewall-cmd --permanent --zonepublic --add-port2377/tcp sudo firewall-cmd --permanent --zonepublic --add-port7946/tcp sudo firewall-cmd --permanent --zonepublic --add-port7946/udp sudo firewall-cmd --permanent --zonepublic --add-port4789/udp sudo firewall-cmd --reload3.3 存储驱动选择建议CentOS默认使用的devicemapper驱动性能较差应切换为overlay2# 确认内核支持overlay2 lsmod | grep overlay # 修改配置 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { storage-driver: overlay2, storage-opts: [ overlay2.override_kernel_checktrue ] } EOF # 重启服务 sudo systemctl restart docker4. Windows 11平台安装Docker的完整方案4.1 专业版与企业版标准安装对于Windows 11专业版/企业版/教育版官方推荐使用Docker Desktop下载安装包注意选择稳定版官方地址https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe国内镜像https://mirrors.aliyun.com/docker-toolbox/windows/docker-desktop/安装前检查确认BIOS中已开启虚拟化Intel VT-x/AMD-V系统需启用Hyper-V和容器特性# 以管理员身份运行PowerShell检查功能状态 Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All安装后配置设置中国镜像加速在Docker Desktop设置中{ registry-mirrors: [ https://registry.docker-cn.com, https://hub-mirror.c.163.com ] }调整资源限制根据机器配置4.2 家庭版解决方案Windows家庭版缺少Hyper-V支持可通过以下两种方式解决方案一使用WSL 2后端启用WSL功能dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart安装WSL 2内核更新包设置WSL 2为默认版本wsl --set-default-version 2安装Linux发行版如UbuntuDocker Desktop将自动检测并使用WSL 2方案二使用VirtualBox后端安装Oracle VirtualBox创建Linux虚拟机推荐Ubuntu Server在虚拟机中安装Docker配置端口转发和共享文件夹4.3 常见错误排查问题1Docker Desktop启动失败提示Virtualization not enabled确认BIOS中已开启虚拟化支持关闭Windows Defender Credential Guard如有# 以管理员身份运行 bcdedit /set hypervisorlaunchtype auto问题2WSL 2安装失败确保Windows版本≥1903内部版本≥18362手动下载并安装WSL 2内核更新包问题3镜像拉取缓慢配置多个国内镜像源尝试阿里云、网易云等加速器5. 多平台通用配置与优化5.1 容器资源限制防止单个容器耗尽系统资源# 运行容器时设置限制 docker run -it --cpus1 --memory512m --memory-swap1g nginx # 查看容器资源使用 docker stats5.2 日志管理策略生产环境日志管理建议使用json-file驱动并限制大小重要日志挂载到宿主机考虑使用Fluentd等日志收集器# 示例运行命令 docker run --log-driverjson-file \ --log-opt max-size10m \ --log-opt max-file3 \ -v /host/path:/container/path \ your-image5.3 网络配置技巧自定义网络提高安全性# 创建自定义网络 docker network create --driverbridge --subnet172.28.0.0/16 my-net # 运行容器时指定网络 docker run --networkmy-net --ip172.28.5.3 -d nginx端口映射注意事项避免使用主机模式--nethost降低隔离性生产环境建议使用反向代理管理访问6. 实战避坑指南来自百万级容器部署经验6.1 存储卷使用禁忌绝对不要将容器内关键数据仅保存在可写层# 错误示范数据随容器删除而丢失 docker run -d mysql # 正确做法 docker run -d -v mysql_data:/var/lib/mysql mysql避免使用--privileged标志除非确实需要# 更安全的替代方案 docker run --cap-addSYS_ADMIN ...6.2 镜像构建优化多阶段构建减小镜像体积# 第一阶段构建环境 FROM golang:1.18 as builder WORKDIR /app COPY . . RUN go build -o myapp . # 第二阶段运行环境 FROM alpine:latest COPY --frombuilder /app/myapp . CMD [./myapp]合理利用构建缓存将变化频率低的指令如依赖安装放在前面变化频繁的指令如源码复制放在后面6.3 安全最佳实践定期扫描镜像漏洞docker scan your-image使用非root用户运行容器FROM alpine RUN addgroup -S appgroup adduser -S appuser -G appgroup USER appuser CMD [your-command]敏感信息管理# 使用Docker secrets或环境变量文件 docker run --env-file.env -d your-image7. 高级应用场景扩展7.1 Docker Compose实战典型docker-compose.yml示例version: 3.8 services: web: image: nginx:alpine ports: - 8080:80 volumes: - ./html:/usr/share/nginx/html networks: - frontend db: image: postgres:13 environment: POSTGRES_PASSWORD_FILE: /run/secrets/db_password volumes: - db_data:/var/lib/postgresql/data secrets: - db_password networks: - backend networks: frontend: backend: volumes: db_data: secrets: db_password: file: ./db_password.txt7.2 多架构支持ARM/x86构建支持多种CPU架构的镜像# 安装buildx插件 docker buildx create --use # 构建多平台镜像 docker buildx build --platform linux/amd64,linux/arm64 -t your-image:multi-arch .7.3 CI/CD集成示例GitLab CI集成Docker构建stages: - build - test - deploy variables: DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 build: stage: build image: docker:20.10 services: - docker:20.10-dind script: - docker build -t your-image . - docker run your-image npm test only: - master8. 维护与监控方案8.1 容器健康检查# Dockerfile中定义健康检查 HEALTHCHECK --interval30s --timeout3s \ CMD curl -f http://localhost/health || exit 1查看健康状态docker inspect --format{{json .State.Health}} your-container8.2 资源监控方案使用cAdvisor收集指标docker run \ --volume/:/rootfs:ro \ --volume/var/run:/var/run:ro \ --volume/sys:/sys:ro \ --volume/var/lib/docker/:/var/lib/docker:ro \ --publish8080:8080 \ --detachtrue \ --namecadvisor \ google/cadvisor:latest结合Prometheus和Grafana实现可视化8.3 备份与恢复策略关键数据备份示例# 备份卷数据 docker run --rm --volumes-from your-container -v $(pwd):/backup alpine \ tar cvf /backup/backup.tar /container/data/path # 恢复数据 docker run --rm --volumes-from your-container -v $(pwd):/backup alpine \ tar xvf /backup/backup.tar -C /container/data/path容器配置备份# 导出容器配置 docker inspect your-container container-config.json
阅读完成 · 觉得有帮助?