在香港CN2云服务器上装Docker,按理说应该挺顺的——系统新、带宽足、CN2线路回国内也快。可偏偏就是有人折腾半天,各种报错,装不上就是装不上。这篇文章不绕弯子,把常见的坑一个一个拎出来讲清楚。
一、先确认虚拟化架构:OpenVZ和KVM差别很大
香港的VPS市场鱼龙混杂,有些便宜套餐用的是OpenVZ虚拟化。OpenVZ是容器级虚拟化,所有VPS共享宿主机的内核,在这种环境下装Docker,大概率会报“无法启动docker daemon”或者内核模块加载失败的错误。
而KVM架构的VPS每个都有独立内核,对Docker的支持是原生的。所以装之前先确认一下:
ls -l /dev/kvm
如果提示文件不存在,或者virt-what命令的输出显示openvz,那这台机器基本就和Docker无缘了,要么换系统模板试试,要么直接换一家支持KVM的供应商。
二、内核版本不达标
Docker对内核版本有硬性要求。CentOS系统要求内核不低于3.10,Debian/Ubuntu系统要求不低于4.9。香港CN2云服务器如果用的是老镜像,内核可能还在3.x甚至2.6的尾巴上。
查一下当前内核版本:
uname -r
如果版本太低,CentOS系统可以尝试升级内核,但稳妥的做法是直接在控制台重装一个较新的系统镜像——Ubuntu 20.04 LTS或Debian 12都是比较省心的选择。
三、软件源访问慢或连不上——香港CN2也救不了Docker官方源
这可能是最容易被忽略的问题。你的服务器在香港,访问Docker官方源按说比国内快,但Docker官方的CDN节点分布并不均匀,有时候从香港过去反而比从日本或新加坡绕。
最常见的情况是:执行yum install docker-ce或apt install docker-ce时报404或者连接超时。根本原因是软件源配置里写的地址指向了download.docker.com,而那个地址在某些时候就是慢,甚至被限流。
解决办法是改用国内镜像源。阿里云、清华、中科大都有Docker CE的镜像,选一个就近的配置上就行。
CentOS系统,用阿里云镜像源:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
yum install -y docker-ce docker-ce-cli containerd.io
Debian/Ubuntu系统,同样换阿里云源:
apt-get update
apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
软件源换成国内镜像后,安装包下载速度通常会从几十KB飙到几MB/s,安装失败的概率也大幅下降。
四、依赖包缺失或版本不兼容
有时候软件源配置对了,但安装时还是报错,比如提示containerd.io找不到,或者docker-ce-cli版本冲突。
这种问题通常是软件包列表没刷新,或者系统里之前装过旧版本Docker没清理干净造成的。
先彻底清理旧版本:
# CentOS
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# Debian/Ubuntu
apt-get remove docker docker-engine docker.io containerd runc
然后刷新软件包列表再重试:
# CentOS
yum clean all && yum makecache
# Debian/Ubuntu
apt-get update
如果还提示依赖缺失,可以用apt --fix-broken install让系统自动修复依赖关系。
五、安装完Docker服务起不来
安装过程没报错,但systemctl start docker之后一查状态,发现服务是死的。
先用systemctl status docker看具体报错信息,再翻一下日志:
journalctl -u docker.service -n 50 --no-pager
几种常见情况:
1. 存储驱动问题。有些老系统默认的存储驱动是devicemapper,新版本的Docker更推荐overlay2。编辑/etc/docker/daemon.json,强制指定驱动:
{
"storage-driver": "overlay2"
}
保存后重启服务。
2. 磁盘空间不足。Docker启动需要至少几GB的空闲空间。用df -h看一眼根分区,如果快满了,清理一下:
docker system prune -a
3. 权限问题。如果报的是permission denied或者Cannot connect to the Docker daemon at unix:///var/run/docker.sock,多半是当前用户没在docker组里:
sudo usermod -aG docker $USER
然后退出SSH重新登录,或者执行newgrp docker让组权限立即生效。
六、镜像拉取慢或拉不下来——配置镜像加速器
Docker装好了,docker pull nginx半天不动,或者超时失败。这个问题和软件源访问慢本质上是一个问题——Docker Hub的镜像仓库在香港的访问质量不稳定。
解决方法是配镜像加速器。编辑/etc/docker/daemon.json(没有就新建),加上加速器地址:
{
"registry-mirrors": ["https://docker.1ms.run"]
}
也可以换成阿里云、腾讯云、DaoCloud等提供的加速地址。配好后重启Docker:
systemctl daemon-reload
systemctl restart docker
用docker info看一眼Registry Mirrors字段,确认配置生效了,再拉镜像速度就正常了。
七、宝塔面板装Docker模块失败的额外情况
有些用户是用宝塔面板,在软件商店里点“安装Docker”一直卡住或报错。这种情况通常是面板的安装脚本走的是Docker官方源,网络卡住了。
宝塔论坛的官方建议是在面板的Docker设置里把加速URL改成国内可用的地址,比如https://docker.1ms.run。如果还不行,就别走面板了,直接在SSH里按上面手动安装的步骤来一遍,往往更快。
总结:香港CN2云服务器的网络条件不差,Docker装不上的原因多数不是硬件或线路问题,而是软件源配置、系统兼容性、依赖包版本这几个技术细节没对上。按优先级排查:先确认虚拟化是KVM,再确认内核版本达标,然后换国内镜像源安装,装完配镜像加速器,最后用systemctl status docker和journalctl看日志定位启动问题。只要一步步来,基本都是能解决的。
相关内容
