☰
Docker全平台安装指南:Ubuntu/CentOS/Windows实战
2026/10/26 8:11:06 网站建设 项目流程

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 [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"

2.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 生产环境关键配置

对于需要长期运行的服务器,建议进行以下加固配置:

  1. 日志轮转配置(防止日志爆满磁盘):
sudo tee /etc/docker/daemon.json <<-'EOF' { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } EOF
  1. 存储驱动优化(根据文件系统选择):
# 查看当前存储驱动 docker info | grep "Storage Driver" # 推荐配置(对于ext4文件系统) sudo tee -a /etc/docker/daemon.json <<-'EOF' { "storage-driver": "overlay2" } EOF
  1. 重启服务使配置生效:
sudo systemctl restart docker sudo systemctl enable docker

3. 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.io

3.2 防火墙与SELinux配置

CentOS默认开启的SELinux和firewalld会导致容器网络访问异常:

# 查看SELinux状态 getenforce # 临时关闭 setenforce 0 # 永久关闭(生产环境建议保持开启并正确配置策略) sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config # 防火墙放行Docker sudo firewall-cmd --permanent --zone=public --add-masquerade sudo firewall-cmd --permanent --zone=public --add-port=2376/tcp sudo firewall-cmd --permanent --zone=public --add-port=2377/tcp sudo firewall-cmd --permanent --zone=public --add-port=7946/tcp sudo firewall-cmd --permanent --zone=public --add-port=7946/udp sudo firewall-cmd --permanent --zone=public --add-port=4789/udp sudo firewall-cmd --reload

3.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_check=true" ] } EOF # 重启服务 sudo systemctl restart docker

4. Windows 11平台安装Docker的完整方案

4.1 专业版与企业版标准安装

对于Windows 11专业版/企业版/教育版,官方推荐使用Docker Desktop:

  1. 下载安装包(注意选择稳定版):

    • 官方地址:https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
    • 国内镜像:https://mirrors.aliyun.com/docker-toolbox/windows/docker-desktop/
  2. 安装前检查:

    • 确认BIOS中已开启虚拟化(Intel VT-x/AMD-V)
    • 系统需启用Hyper-V和容器特性
# 以管理员身份运行PowerShell检查功能状态 Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
  1. 安装后配置:
    • 设置中国镜像加速(在Docker Desktop设置中):
      { "registry-mirrors": [ "https://registry.docker-cn.com", "https://hub-mirror.c.163.com" ] }
    • 调整资源限制(根据机器配置):

4.2 家庭版解决方案

Windows家庭版缺少Hyper-V支持,可通过以下两种方式解决:

方案一:使用WSL 2后端

  1. 启用WSL功能:
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  2. 安装WSL 2内核更新包
  3. 设置WSL 2为默认版本:
    wsl --set-default-version 2
  4. 安装Linux发行版(如Ubuntu)
  5. Docker Desktop将自动检测并使用WSL 2

方案二:使用VirtualBox后端

  1. 安装Oracle VirtualBox
  2. 创建Linux虚拟机(推荐Ubuntu Server)
  3. 在虚拟机中安装Docker
  4. 配置端口转发和共享文件夹

4.3 常见错误排查

问题1:Docker Desktop启动失败,提示"Virtualization not enabled"

  • 确认BIOS中已开启虚拟化支持
  • 关闭Windows Defender Credential Guard(如有):
    # 以管理员身份运行 bcdedit /set hypervisorlaunchtype auto

问题2:WSL 2安装失败

  • 确保Windows版本≥1903(内部版本≥18362)
  • 手动下载并安装WSL 2内核更新包

问题3:镜像拉取缓慢

  • 配置多个国内镜像源
  • 尝试阿里云、网易云等加速器

5. 多平台通用配置与优化

5.1 容器资源限制

防止单个容器耗尽系统资源:

# 运行容器时设置限制 docker run -it --cpus=1 --memory=512m --memory-swap=1g nginx # 查看容器资源使用 docker stats

5.2 日志管理策略

生产环境日志管理建议:

  • 使用json-file驱动并限制大小
  • 重要日志挂载到宿主机
  • 考虑使用Fluentd等日志收集器
# 示例运行命令 docker run --log-driver=json-file \ --log-opt max-size=10m \ --log-opt max-file=3 \ -v /host/path:/container/path \ your-image

5.3 网络配置技巧

自定义网络提高安全性:

# 创建自定义网络 docker network create --driver=bridge --subnet=172.28.0.0/16 my-net # 运行容器时指定网络 docker run --network=my-net --ip=172.28.5.3 -d nginx

端口映射注意事项:

  • 避免使用主机模式(--net=host)降低隔离性
  • 生产环境建议使用反向代理管理访问

6. 实战避坑指南(来自百万级容器部署经验)

6.1 存储卷使用禁忌

  1. 绝对不要将容器内关键数据仅保存在可写层:

    # 错误示范(数据随容器删除而丢失) docker run -d mysql # 正确做法 docker run -d -v mysql_data:/var/lib/mysql mysql
  2. 避免使用--privileged标志,除非确实需要:

    # 更安全的替代方案 docker run --cap-add=SYS_ADMIN ...

6.2 镜像构建优化

  1. 多阶段构建减小镜像体积:

    # 第一阶段:构建环境 FROM golang:1.18 as builder WORKDIR /app COPY . . RUN go build -o myapp . # 第二阶段:运行环境 FROM alpine:latest COPY --from=builder /app/myapp . CMD ["./myapp"]
  2. 合理利用构建缓存:

    • 将变化频率低的指令(如依赖安装)放在前面
    • 变化频繁的指令(如源码复制)放在后面

6.3 安全最佳实践

  1. 定期扫描镜像漏洞:

    docker scan your-image
  2. 使用非root用户运行容器:

    FROM alpine RUN addgroup -S appgroup && adduser -S appuser -G appgroup USER appuser CMD ["your-command"]
  3. 敏感信息管理:

    # 使用Docker secrets或环境变量文件 docker run --env-file=.env -d your-image

7. 高级应用场景扩展

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.txt

7.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: - master

8. 维护与监控方案

8.1 容器健康检查

# Dockerfile中定义健康检查 HEALTHCHECK --interval=30s --timeout=3s \ CMD curl -f http://localhost/health || exit 1

查看健康状态:

docker inspect --format='{{json .State.Health}}' your-container

8.2 资源监控方案

  1. 使用cAdvisor收集指标:

    docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest
  2. 结合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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询