全新 Ubuntu 服务器标准配置指南(docker)

本指南旨在为一台全新的 Ubuntu 服务器提供一套完整、高效的标准化初始配置流程。流程涵盖了从系统基础设定、防火墙配置到 Docker 环境安装与优化的所有关键步骤。您可以按照本指南的顺序逐一执行命令,以快速搭建一个安全、稳定且高效的服务器环境。

第一步:基础系统设定

此步骤将完成系统更新、更换为国内高速软件源以及安装常用的基础工具。

  1. 更新并升级系统

    确保系统所有软件包都处于最新的安全状态。

    sudo apt-get update
    sudo apt-get upgrade -y
    
    
  2. 更换系统软件源为阿里云镜像

    大幅提升后续软件的安装与更新速度。

    • 备份原始文件:

      sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
      
      
    • 编辑源文件:

      sudo nano /etc/apt/sources.list
      
      
    • 删除文件内所有旧内容,然后完整复制并粘贴以下适用于 Ubuntu 24.04 的阿里云源内容:

      deb http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
      
      deb http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse
      
      deb http://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse
      
      deb http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse
      
      
    • 保存并退出 (在 nano 编辑器中,按 Ctrl+X,然后按 Y,最后按 Enter)。

    • 刷新软件包列表以使新源生效:

      sudo apt-get update
      
      
  3. 安装常用工具集

    sudo apt-get install -y curl wget git vim htop net-tools
    
    

第二步:防火墙 (UFW) 设定

建立基础的网络安全防护,仅开放必要的服务端口。

  1. 设定防火墙规则(先放行再启用)

    # 允许 SSH (端口 22),这是最重要的,防止您被锁在外面
    sudo ufw allow ssh
    
    # 允许 HTTP (端口 80),用于 Web 服务
    sudo ufw allow 80
    
    # 允许 HTTPS (端口 443),用于安全的 Web 服务
    sudo ufw allow 443
    
    
  2. 启用防火墙

    sudo ufw enable
    
    

    (当系统提示 Command may disrupt existing ssh connections 时,输入 y 并按 Enter)

  3. 检查防火墙状态,确认规则已生效

    sudo ufw status verbose
    
    

第三步:Docker 安装与配置 (已整合国内镜像)

此流程将直接使用国内镜像完成 Docker 的安装与配置,确保安装和后续使用过程中的速度。

  1. 安装 Docker 的前置作业

    sudo apt-get install -y ca-certificates curl gnupg
    
    
  2. 添加 Docker 官方 GPG 安全密钥

    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
    
    
  3. 创建 Docker 的 APT 软件源文件 (直接使用阿里云镜像)

    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
      $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    
  4. 安装 Docker 引擎

    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
    
  5. 创建 Docker 镜像加速器配置文件 (使用2025年7月实测可用镜像)

    根据最新测试,多个旧的公共镜像站已失效。以下是当前实测可用且稳定性较高的公共镜像源。

    • 执行以下命令,配置 Docker 使用一组可靠的国内镜像:

      sudo mkdir -p /etc/docker
      sudo tee /etc/docker/daemon.json <<-'EOF'
      {
        "registry-mirrors": [
          "https://docker.xuanyuan.me",
          "https://docker.1ms.run",
          "https://docker.m.daocloud.io"
        ]
      }
      EOF
      
      
  6. 重启 Docker 服务使所有配置生效

    sudo systemctl restart docker
    
    
  7. 将您当前的用户加入 docker 用户组(免去 sudo

    sudo usermod -aG docker $USER
    
    

第四步:最终验证

  1. 登出并重新登入

    请立即断开您当前的 SSH 连接,然后重新登入一次您的服务器。 这样用户组权限的变更才会完全生效。

  2. 验证配置与运行状态

    在您重新登入服务器之后,执行以下命令:

    • 验证镜像加速器是否生效:

      docker info | grep -A 3 -i "Registry Mirrors"
      
      

      (您应该能看到已配置的镜像地址列表)

    • 验证 Docker 是否能正常运行:

      docker run hello-world
      
      

      (您应该能看到 "Hello from Docker!" 的成功信息)

  3. 验证镜像是从哪个加速器拉取的 (可选的高级技巧)

    docker inspect 命令通常只会显示镜像的官方来源 (docker.io),而不会显示它是从哪个镜像加速器下载的。要查看详细的拉取过程,最可靠的方法是监控 Docker 服务的实时日志。

    • 第一步:删除本地已有的镜像 (以便重新拉取)

      docker rmi hello-world
      
      
    • 第二步:在一个终端窗口中,开始监控 Docker 日志

      sudo journalctl -fu docker.service
      
      

      (这个命令会持续打印新的日志,请保持这个终端窗口打开)

    • 第三步:打开另一个新的终端窗口,执行拉取命令

      docker pull hello-world
      
      
    • 第四步:观察第一个窗口的日志输出

      在日志中,你会看到 Docker 按顺序尝试连接你在 daemon.json 中配置的镜像站。如果第一个失败,它会尝试第二个,以此类推。通过观察日志中的网络请求地址,您就可以判断出最终是从哪个镜像站成功拉取了镜像。

⚠️ 特别提醒:关于本地机房的DNS问题

请注意,以上是一套在正常网络环境下的标准配置流程。

根据我们之前的排错经验,如果您的服务器处于有严格网络策略的本地机房,可能会遇到 DNS 限制问题。如果您在执行 docker run hello-world 时再次遇到 Name or service not known 或网络超时错误,这意味着这台新服务器也受到了同样的网络策略限制。

届时,您需要优先联系您的网络管理员,请求他们为您的服务器IP放行对以下域名的解析和访问:

  • docker.xuanyuan.me

  • docker.1ms.run

  • docker.m.daocloud.io

附录:深度疑难排解 (当所有方法都失效时)

如果您严格执行了以上所有步骤,包括重启服务器,但 docker info 中的 Registry Mirrors 依然为空,这表明您的系统环境存在非常特殊且顽固的配置问题,导致 Docker 服务无法加载自定义配置。

请按照以下步骤进行最终诊断和修复。

1. 强制 Docker 服务加载配置文件

此方法将修改 Docker 的系统服务单元,强制其在启动时必须读取我们的配置文件。

  • 第一步:创建 systemd 覆盖文件

    这个命令会打开一个空的编辑器,用于安全地修改 Docker 的启动行为。

    sudo systemctl edit docker.service
    
    
  • 第二步:粘贴以下内容

    请将下面的所有内容,完整地复制并粘贴到刚刚打开的编辑器中。

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd --config-file /etc/docker/daemon.json -H fd:// --containerd=/run/containerd/containerd.sock
    
    
  • 第三步:保存并退出 (Ctrl+X, Y, Enter)。

  • 第四步:用最彻底的方式重启服务

    这个顺序将确保所有旧的配置和状态被清除。

    sudo systemctl stop docker.socket
    sudo systemctl stop docker.service
    sudo systemctl daemon-reload
    sudo systemctl start docker.service
    
    
  • 第五步:再次验证

    docker info | grep -A 3 -i "Registry Mirrors"
    
    

    执行完此步骤后,镜像加速器理应生效。如果依然无效,请继续下一步。

2. 终极诊断:查看 systemd 加载的最终配置

让我们看看 systemd 最终“学习”到的 Docker 启动命令到底是什么。

  • 运行以下命令:

    systemctl cat docker.service
    
    
  • 分析输出:

    请检查输出内容。在 # /etc/systemd/system/docker.service.d/override.conf 这一行下面,您必须看到我们添加的 ExecStart=/usr/bin/dockerd --config-file /etc/docker/daemon.json ... 这一行。

    • 如果能看到,但 docker info 依然无效,说明 Docker 程序本身可能存在问题。

    • 如果看不到,说明 systemd 由于某种原因忽略了我们的修改,这可能是系统权限或安全模块(如 AppArmor)的深层问题。

如果问题依然存在,请考虑联系专业的系统管理员或服务器提供商以获得进一步支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值