91云服务器在国服也不卡顿:Ubuntu安装Docker 国内镜像加速秘笈

云服务器前景 为什么写这篇?在国内使用 Docker 经常遇到镜像拉取速度慢甚至拉不下来的问题。本文演示如何在 Ubuntu 上从零安装 Docker 与 Docker Compose、常见问题的解决···

云服务器前景

为什么写这篇?在国内使用 Docker 经常遇到镜像拉取速度慢甚至拉不下来的问题。本文演示如何在 Ubuntu 上从零安装 Docker 与 Docker Compose、常见问题的解决方法、如何将普通用户加入 docker 组以免频繁 sudo、以及一份实用的国内 registry-mirror 配置,帮助你在国内环境下顺畅使用 Docker。

适用读者:Ubuntu 用户(包括 VPS、家庭小主机、云主机),有一定命令行基础。本文以 Ubuntu 22.04/20.04 为主,其他版本命令差别很小。

1. 准备与注意事项

建议使用具有 sudo 权限的账户执行以下命令(或以 root 操作)。在执行安装前,建议更新系统包索引:sudo apt update && sudo apt upgrade -y

2. 正常安装 Docker(官方推荐步骤)

下面给出官方推荐的安装流程(适用于 Ubuntu)。可以复制粘贴执行。

安装依赖并添加 Docker 官方仓库公钥:

sudoapt updatesudoapt install -y ca-certificates curl gnupg lsb-release添加 Docker 官方 GPG keysudomkdir -p /etc/apt/keyringscurl-fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg添加 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

安装 Docker Engine:

sudo aptupdatesudo aptinstall-y docker-ce docker-ce-cli containerd.io docker-buildx-plugindocker-compose-plugin

验证安装:

sudodocker versionsudodocker run --rm hello-world

如果你能看到 hello-world 的欢迎信息,说明 Docker 引擎已成功安装。

3. 安装 Docker Compose

可用以下命令检查(按照上面的安装步骤,应该已经安装了docker compose了):

dockercompose version

如果系统没有安装 Compose 插件,可以手动安装 Docker Compose v2(示例):

下载并安装 docker-compose(替换版本号为最新)sudo curl -L"https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose version

4. 出现问题后如何处理(排查与多种解决方法)

安装过程中常见问题包括:仓库公钥警告、apt-key 警告、源不可用或拉取速度慢。下面给出常见问题与解决思路。

4.1 apt-key / GPG key 警告

自 Debian/Ubuntu 开始,apt-key add 被弃用,官方建议使用 /etc/apt/keyrings 并通过 signed-by 指定 key(本文安装步骤已使用该方法)。若你在某些旧教程看到使用 apt-key 的命令,建议改用上面gpg --dearmor 到 /etc/apt/keyrings的做法。

4.2 换源尝试(当官方源访问困难时)

你可以将 Docker 官方源替换为国内镜像源(例如阿里云提供的 Docker CE 源镜像),或直接把 Docker 安装包从国内镜像站下载。阿里云、清华、USTC 等提供的镜像有不同策略,使用前请阅读对应文档。注意:替换源和替换公钥时要谨慎,确保来源可信。

4.3 手动换源和手动导入 key(示例)

如果你的服务器无法直接访问下载地址,可在本地下载公钥并通过 scp 上传,然后手动添加到 /etc/apt/keyrings。或通过代理工具临时访问外网完成安装。

4.4 检查/etc/apt/sources.list.d/docker.list 是否存在并正确

若 apt 找不到 docker 包,检查该文件是否存在并包含正确的 repository URL 与 signed-by 指向正确的 key 文件。

4.5 其他方法

如果网络环境受限,可以考虑在本地机器先下载 deb 包并用 dpkg -i 安装,或使用云厂商的镜像来安装(例如使用阿里云一键安装脚本)。但长期推荐使用官方签名仓库或可信镜像仓库。

5. (可选)配置非 root 用户使用 Docker

为了避免每次使用 docker 时加 sudo,可以把用户加入 docker 组(注意安全性:同组用户相当于具备 root 权限):

sudousermod -aG docker$USER使组变更立即生效(可选)newgrp docker或退出并重新登录

之后可以直接运行:

docker run--rm hello-world

6. 测试 Docker

阿里云服务器暂停服务

基本测试流程:

dockerversiondockerinfodockerrun --rm hello-worlddockerrun --rm -v /tmp:/data alpine ls /data

如果上述命令能够正常执行并返回预期结果,Docker 环境是可用的。

7. 在国内使用 Docker:配置 registry mirror(镜像加速)

由于直接从 Docker Hub 拉取镜像在国内常常速度很慢,推荐配置多个国内镜像源作为 registry-mirrors,挂到 Docker 的 daemon 配置中(记得收藏也许后面能用得着)。

编辑或创建 /etc/docker/daemon.json,例如:

{"registry-mirrors": ["https://docker.registry.cyou","https://mirror.aliyuncs.com","https://docker.m.daocloud.io","https://docker.mirrors.ustc.edu.cn","https://mirror.baidubce.com"],"max-concurrent-downloads":10,"max-concurrent-uploads":5}

保存后重启 Docker:

sudosystemctl daemon-reloadsudosystemctl restart docker

你可以通过 docker info 查看是否生效:

dockerinfo| grep -i"Registry Mirrors"-A5

推荐镜像源(常见、供参考,使用前请确认来源与可用性):

https://mirror.aliyuncs.comhttps://docker.m.daocloud.iohttps://docker.mirrors.ustc.edu.cnhttps://mirror.baidubce.com社区/第三方镜像(如 docker.registry.cyou、jsdelivr 镜像等)——这些不由官方维护,作为 fallback 可以使用,但生产环境请首选阿里/USTC/清华等高校/厂商镜像。

示例(更长的备选列表,按需选取并保留可信源):

{"registry-mirrors": ["https://docker.1ms.run","https://docker.hpcloud.cloud","https://docker.m.daocloud.io","https://docker.unsee.tech","https://docker.chenby.cn","https://mirrors.ustc.edu.cn","https://mirrors.azure.cn","https://dockerpull.org"] }

注意事项:镜像加速器只是缓存与加速镜像拉取,镜像的完整性与安全性仍需谨慎,建议在生产中结合自己的私有 Registry 或镜像扫描机制。

8. Docker 设置 HTTP/SOCKS5 代理(全局加速网络)

有些时候即使配置 registry mirror 也无法拉取镜像,需要通过代理加速。

云服务器装什么系统好

① 安装 privoxy(将 SOCKS5 转 HTTP)

假设代理服务器为 192.168.1.47:7890:

sudoapt install -y privoxyecho"forward-socks5t / 192.168.1.47:7890 ." | sudo tee -a /etc/privoxy/configsudosystemctl restart privoxy

privoxy 默认监听 localhost:8118

② 配置 Docker 使用代理

sudomkdir-p /etc/systemd/system/docker.service.d sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf >/dev/null<<EOF[Service] Environment="HTTP_PROXY=http://127.0.0.1:8118"Environment="HTTPS_PROXY=http://127.0.0.1:8118"Environment="NO_PROXY=127.0.0.1,localhost,::1"EOF sudo systemctl daemon-reload sudo systemctl restart docker

③ 恢复

sudorm -rf /etc/systemd/system/docker.service.dsudosystemctl daemon-reloadsudosystemctl restart docker

9. 其他实用技巧与建议

使用私有 Registry(如 Harbor)做团队镜像仓库,既可以加速也能管控镜像安全。保持 Docker 与宿主系统定期更新,修复安全漏洞。若遇到镜像拉取 403/429(限流/权限)问题,改用第三方镜像源可能无效,建议换镜像版本或使用加速器。在受限网络(公司内网)下,可先在可访问网络的机器上拉好镜像并 docker save 传输到目标主机后 docker load。对于生产环境,尽量避免把用户随意加入 docker 组,考虑使用 sudo + 精细化权限或容器运行时策略。

常见问题速查(FAQ)

Q:为什么 apt 报 GPG 错误或 key 不受信任?A:请确保你按官方教程把 GPG key 放到 /etc/apt/keyrings 并在 sources.list 中使用 signed-by 指向该 key 文件,避免使用过时的 apt-key 方法。Q:修改 daemon.json 后 Docker 没生效?A:重启 Docker 服务:sudo systemctl restart docker,并用 docker info 检查是否读取新的 registry-mirrors。Q:不想使用 sudo,添加用户到 docker 组是否安全?A:该组相当于 root 权限,请仅在受信任的环境中使用;在生产环境慎用。

欢迎收藏、转发,遇到 Docker 折腾问题随时可对照查阅!本文会持续更新,如有建议/补充,欢迎留言讨论!

版权声明:转载请注明来源。可按需删减调整,欢迎建议更优的流程或国内镜像源!

阿里云托管服务器

您好:云优数据云计算 www.yunyoushuju.cn 2核2G6M最低19.9元/月 欢迎开机

发表评论

评论列表
未查询到任何数据!