欢迎光临
我们一直在努力

Linux系统Docker安装完全指南(Ubuntu/CentOS)

📖 前言

Linux是Docker的原生运行环境,也是Docker最适配的操作系统。无论是Ubuntu、CentOS还是其他发行版,Linux都能充分发挥Docker的性能优势。本文针对Ubuntu 20.04/22.04和CentOS 7/8这两个最常用的Linux发行版,提供保姆级Docker安装教程。

本指南特别针对国内网络环境优化,提供镜像加速配置,确保新手也能一次安装成功!

🎯 适用系统:Ubuntu 18.04+、CentOS 7+、Debian 10+📅 最后更新:2026年4月


📋 文章目录

  • 🔍 快速开始

  • 💡 Docker核心概念

  • 📊 系统要求检查

  • 🚀 方式一:官方脚本一键安装(新手首选)

  • 🔧 方式二:手动安装(生产环境推荐)

  • ⚡ 配置国内镜像加速

  • ✅ 验证安装与基本使用

  • 🔍 常见问题解决

  • 📚 深入学习资源


🔍 快速开始

安装方式命令特点
一键脚本安装 curl -fsSL https://get.docker.com \\| sudo sh 自动识别系统,极简安装
Ubuntu手动安装 见下文详细步骤 版本可控,适合生产环境
CentOS手动安装 见下文详细步骤 稳定可靠,企业首选

一句话总结:新手用脚本,生产用手动!


💡 Docker核心概念(Linux版)

在Linux上使用Docker,你需要了解:

  • Docker守护进程:运行在后台的dockerd服务

  • Docker CLI:命令行工具,与守护进程通信

  • Cgroups & Namespaces:Linux内核功能,Docker的技术基础

  • Systemd集成:通过systemd管理Docker服务


  • 📊 系统要求检查

    1. 检查Linux内核版本

    # 查看内核版本
    uname -r
    # 要求:≥3.10
    # 示例输出:5.15.0-46-generic

    2. 检查系统发行版

    # Ubuntu/Debian系
    cat /etc/os-release

    # CentOS/RHEL系
    cat /etc/centos-release

    3. 检查是否已安装旧版本

    docker –version
    # 如果有旧版本,建议先卸载


    🚀 方式一:官方脚本一键安装(新手首选)

    这是最简单、最快速的安装方式,适用于大多数场景:

    # 1. 下载官方一键安装脚本
    curl -fsSL https://get.docker.com -o get-docker.sh

    # 2. 执行安装脚本(自动识别系统类型)
    sudo sh get-docker.sh

    # 3. 启动Docker服务
    sudo systemctl start docker

    # 4. 设置开机自启(推荐)
    sudo systemctl enable docker

    # 5. 验证安装
    docker –version
    sudo docker run hello-world

    脚本安装的好处:

    • 自动适配Ubuntu、CentOS、Debian等主流发行版

    • 自动安装最新稳定版Docker

    • 自动配置systemd服务

    • 自动添加docker-compose插件


    🔧 方式二:手动安装(生产环境推荐)

    手动安装可以精确控制Docker版本,更适合生产环境。

    📦 Ubuntu/Debian系统安装(20.04/22.04)

    #!/bin/bash
    # Ubuntu/Debian Docker安装脚本

    echo "=== Ubuntu Docker安装开始 ==="

    # 1. 卸载旧版本(如果有)
    echo "步骤1:卸载旧版本…"
    sudo apt remove -y docker docker-engine docker.io containerd runc

    # 2. 更新包索引
    echo "步骤2:更新包索引…"
    sudo apt update

    # 3. 安装前置依赖
    echo "步骤3:安装前置依赖…"
    sudo apt install -y \\
      ca-certificates \\
       curl \\
      gnupg \\
      lsb-release

    # 4. 添加Docker官方GPG密钥(兼容apt-key弃用)
    echo "步骤4:添加Docker GPG密钥…"
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg

    # 5. 添加Docker软件源
    echo "步骤5:添加Docker软件源…"
    echo \\
     "deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \\
     $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    # 6. 再次更新包索引
    echo "步骤6:更新包索引…"
    sudo apt update

    # 7. 安装Docker Engine及相关工具
    echo "步骤7:安装Docker Engine…"
    sudo apt install -y \\
      docker-ce \\
      docker-ce-cli \\
      containerd.io \\
      docker-buildx-plugin \\
      docker-compose-plugin

    # 8. 启动并设置开机自启
    echo "步骤8:启动Docker服务…"
    sudo systemctl start docker
    sudo systemctl enable docker

    echo "=== Ubuntu Docker安装完成 ==="
    sleep 2
    docker –version

    🔴 CentOS/RHEL系统安装(7/8)

    #!/bin/bash
    # CentOS/RHEL Docker安装脚本

    echo "=== CentOS Docker安装开始 ==="

    # 1. 卸载旧版本
    echo "步骤1:卸载旧版本…"
    sudo yum remove -y docker \\
      docker-client \\
      docker-client-latest \\
      docker-common \\
      docker-latest \\
      docker-latest-logrotate \\
      docker-logrotate \\
      docker-engine

    # 2. 安装yum-utils工具
    echo "步骤2:安装yum-utils…"
    sudo yum install -y yum-utils

    # 3. 添加Docker官方软件源
    echo "步骤3:添加Docker软件源…"
    sudo yum-config-manager \\
       –add-repo \\
      https://download.docker.com/linux/centos/docker-ce.repo

    # 4. 安装Docker Engine及相关工具
    echo "步骤4:安装Docker Engine…"
    sudo yum install -y \\
      docker-ce \\
      docker-ce-cli \\
      containerd.io \\
      docker-buildx-plugin \\
      docker-compose-plugin

    # 5. 启动并设置开机自启
    echo "步骤5:启动Docker服务…"
    sudo systemctl start docker
    sudo systemctl enable docker

    echo "=== CentOS Docker安装完成 ==="
    sleep 2
    docker –version

    🔑 非root用户使用Docker(必做!)

    默认情况下,需要sudo才能执行docker命令。为了让普通用户也能使用:

    # 将当前用户加入docker组
    sudo usermod -aG docker $USER

    # 重新登录使配置生效
    # 或者执行:
    newgrp docker

    # 验证:不需要sudo执行docker命令
    docker run hello-world


    ⚡ 配置国内镜像加速(必做!)

    由于国内访问Docker Hub速度慢,必须配置镜像加速器:

    通用配置方法

    # 1. 创建配置文件目录
    sudo mkdir -p /etc/docker

    # 2. 创建并编辑配置文件
    sudo tee /etc/docker/daemon.json << 'EOF'
    {
     "registry-mirrors": [
       "https://docker.mirrors.ustc.edu.cn",
       "https://hub-mirror.c.163.com",
       "https://docker.mirrors.aliyuncs.com",
       "https://mirror.ccs.tencentyun.com"
    ],
     "log-driver": "json-file",
     "log-opts": {
       "max-size": "100m",
       "max-file": "3"
    }
    }
    EOF

    # 3. 重启Docker服务
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    # 4. 验证配置
    docker info | grep "Registry Mirrors"

    镜像加速源推荐

    镜像源URL特点
    中科大镜像 https://docker.mirrors.ustc.edu.cn 国内最快,推荐首选
    网易镜像 https://hub-mirror.c.163.com 稳定性好
    阿里云镜像 https://docker.mirrors.aliyuncs.com 需要登录阿里云账户
    腾讯云镜像 https://mirror.ccs.tencentyun.com 腾讯云用户推荐

    ✅ 验证安装与基本使用

    1. 基本验证

    # 检查Docker版本
    docker –version
    # 预期输出:Docker version 20.10.x, build xxxxx

    # 检查Docker引擎信息
    docker info

    # 运行测试容器(关键是这个!)
    docker run hello-world
    # 预期看到:Hello from Docker!

    2. 运行常用服务测试

    # 运行一个Nginx Web服务器
    docker run -d -p 80:80 –name my-nginx nginx

    # 检查容器运行状态
    docker ps

    # 查看容器日志
    docker logs my-nginx

    # 测试访问(curl或浏览器)
    curl http://localhost

    # 停止并清理
    docker stop my-nginx
    docker rm my-nginx

    3. 常用命令速查

    # 📦 镜像管理
    docker images               # 查看镜像
    docker pull ubuntu:20.04    # 拉取镜像
    docker rmi IMAGE_ID         # 删除镜像
    docker search mysql         # 搜索镜像

    # 🐳 容器管理
    docker ps                   # 查看运行中容器
    docker ps -a                # 查看所有容器
    docker stop CONTAINER_ID    # 停止容器
    docker start CONTAINER_ID   # 启动容器
    docker restart CONTAINER_ID # 重启容器
    docker rm CONTAINER_ID      # 删除容器

    # 📊 系统信息
    docker stats                # 查看容器资源使用
    docker system df            # 查看磁盘使用
    docker system prune -a     # 清理无用数据

    # 🔧 高级功能
    docker exec -it CONTAINER_ID bash  # 进入容器
    docker cp FILE CONTAINER_ID:PATH   # 复制文件到容器
    docker inspect CONTAINER_ID         # 查看容器详细信息


    🔍 常见问题解决

    ❌ 问题1:权限不足

    Got permission denied while trying to connect to the Docker daemon

    解决方案:

    # 方案1:将用户加入docker组(推荐)
    sudo usermod -aG docker $USER
    # 重新登录或执行:
    newgrp docker

    # 方案2:修改Docker socket权限(临时)
    sudo chmod 666 /var/run/docker.sock

    # 方案3:修改Docker运行用户(生产环境)
    # 编辑 /etc/docker/daemon.json
    {
     "group": "docker"
    }

    ❌ 问题2:镜像拉取超时/失败

    Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled

    解决方案:

    # 1. 确认镜像加速配置正确
    docker info | grep -A 5 "Registry Mirrors"

    # 2. 临时使用国内镜像源拉取
    docker pull docker.mirrors.ustc.edu.cn/library/nginx

    # 3. 修改解析地址(Ubuntu)
    # 编辑 /etc/hosts
    203.208.40.66 registry-1.docker.io

    # 4. 使用代理(如有)
    # 编辑 /etc/systemd/system/docker.service.d/http-proxy.conf
    [Service]
    Environment="HTTP_PROXY=http://proxy.example.com:8080"
    Environment="HTTPS_PROXY=http://proxy.example.com:8080"

    ❌ 问题3:磁盘空间不足

    Docker会占用大量磁盘空间,定期清理:

    # 查看磁盘使用
    docker system df

    # 清理无用数据
    docker system prune

    # 强制清理所有(包括未使用的镜像)
    docker system prune -a -f

    # 清理特定资源
    docker image prune      # 清理无用镜像
    docker container prune  # 清理停止的容器
    docker volume prune    # 清理无用数据卷
    docker network prune   # 清理无用网络

    ❌ 问题4:端口冲突

    Error: listen tcp 0.0.0.0:80: bind: address already in use

    解决方案:

    # 1. 查看占用端口的进程
    sudo lsof -i :80
    # 或
    sudo netstat -tlnp | grep :80

    # 2. 停止占用进程或换个端口
    # 方案A:更改容器映射端口
    docker run -d -p 8080:80 nginx

    # 方案B:停用占用进程
    sudo systemctl stop nginx  # 如果系统安装了nginx

    ❌ 问题5:systemd启动失败

    Failed to start Docker Application Container Engine

    解决方案:

    # 1. 查看具体错误信息
    sudo systemctl status docker.service
    sudo journalctl -xe -u docker

    # 2. 查看端口是否被占用
    sudo lsof -i :2375
    sudo lsof -i :2376

    # 3. 检查SELinux状态(CentOS)
    getenforce
    # 如果是Enforcing,可临时关闭
    sudo setenforce 0

    # 4. 检查防火墙
    sudo firewall-cmd –list-all  # CentOS
    sudo ufw status              # Ubuntu


    📚 深入学习资源

    官方文档

    • Docker官方文档:https://docs.docker.com/

    • Docker Compose文档:https://docs.docker.com/compose/

    • Dockerfile参考:https://docs.docker.com/engine/reference/builder/

    中文教程

  • Docker从入门到实践:https://yeasy.gitbook.io/docker_practice

  • 菜鸟教程Docker篇:https://www.runoob.com/docker/docker-tutorial.html

  • 常用仓库

    • Docker Hub:https://hub.docker.com/

    • 阿里云容器镜像服务:https://cr.console.aliyun.com/


    🌟 生产环境最佳实践

    安全建议

  • 不要使用root运行容器:使用–user参数

  • 只暴露必要端口:最小权限原则

  • 定期更新镜像:修复安全漏洞

  • 扫描镜像安全:使用docker scan

  • 配置资源限制:防止容器耗尽系统资源

  • 性能优化

    # 在daemon.json中添加配置
    {
     "storage-driver": "overlay2",
     "log-driver": "json-file",
     "log-opts": {
       "max-size": "10m",
       "max-file": "3"
    },
     "default-ulimits": {
       "nofile": {
         "Name": "nofile",
         "Hard": 65535,
         "Soft": 65535
      }
    }
    }

    # 重启Docker
    sudo systemctl restart docker

    监控方案

    # 使用cAdvisor监控
    docker run \\
     –volume=/:/rootfs:ro \\
     –volume=/var/run:/var/run:ro \\
     –volume=/sys:/sys:ro \\
     –volume=/var/lib/docker/:/var/lib/docker:ro \\
     –volume=/dev/disk/:/dev/disk:ro \\
     –publish=8080:8080 \\
     –detach=true \\
     –name=cadvisor \\
     –privileged \\
     –device=/dev/kmsg \\
    gcr.io/cadvisor/cadvisor:v0.47.0


    🎯 总结

    安装要点回顾

  • 新手用脚本:curl -fsSL https://get.docker.com | sudo sh

  • 生产用手动:通过软件源安装,版本可控

  • 必配镜像加速:国内网络环境必须配置

  • 用户权限配置:将用户加入docker组

  • 测试验证:docker run hello-world必须成功

  • 后续学习路径

  • 基础阶段:镜像拉取、容器运行、网络配置

  • 进阶阶段:Dockerfile编写、Docker Compose

  • 高级阶段:镜像仓库搭建、容器编排、监控日志


  • 🎊 恭喜! 你已经成功在Linux系统上安装好了Docker。Docker的强大能力正在等待你去发掘。从今天开始,告别"在我这里能运行"的问题,享受容器化带来的便利!

    💡 下一步:尝试创建一个简单的Web应用,体验真正的容器化开发流程。

    赞(0)
    未经允许不得转载:171主机测评 » Linux系统Docker安装完全指南(Ubuntu/CentOS)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址