docker安装
https://docs.docker.com/engine/install/centos/
官方文档的 找到install chentos 安装
https://docs.docker.com/engine/install/centos/#installation-methods
docker配置失败
原因:
从错误提示 curl error (35): SSL connect error for https://download.docker.com/linux/centos/docker-ce.repo
及 TCP connection reset by peer
来看,配置Docker仓库失败的核心原因是SSL连接异常,具体可从以下维度分析:
一、网络层面问题
-
网络连通性故障
- 服务器无法访问外部网络(如DNS解析失败、路由中断),导致无法连接
download.docker.com
。 - 防火墙/安全组限制了443端口(HTTPS默认端口)的出站请求,使SSL连接被阻断。
- 服务器无法访问外部网络(如DNS解析失败、路由中断),导致无法连接
-
代理配置缺失(若存在代理环境)
若服务器处于代理网络中,但未在dnf
或系统环境变量中配置代理,会导致连接被代理服务器拒绝或重置。
二、SSL证书验证问题
-
系统时间错误
Docker仓库的SSL证书有有效期,若服务器系统时间与实际时间偏差过大(如时区错误、时钟未同步),会导致证书有效期校验失败,触发SSL连接错误。 -
CA证书不完整或过期
系统缺少验证Docker仓库证书所需的根CA证书或中间证书,导致无法完成SSL握手。CentOS系统的CA证书存储在/etc/pki/tls/certs/ca-bundle.crt
,若该文件损坏或未更新,会引发验证失败。
三、仓库服务端或配置问题
-
官方仓库临时不可用
极少数情况下,Docker官方仓库可能因维护、限流等原因暂时拒绝连接,但概率较低。 -
repo地址拼写错误
虽然命令中URL是官方地址,但需确认是否因网络环境(如内网)导致URL无法访问(如替换为国内镜像源,如阿里云Docker镜像)。
排查与解决步骤
1. 测试网络连通性
# 检查DNS解析
ping download.docker.com
# 详细测试SSL连接(查看具体错误阶段)
curl -v https://download.docker.com/linux/centos/docker-ce.repo
- 若
ping
失败:检查网络配置(如/etc/resolv.conf
的DNS服务器)、防火墙出站规则。 - 若
curl -v
显示“证书验证失败”:检查系统时间(date
命令),或更新CA证书:dnf install -y ca-certificates # 更新CA证书包
2. 检查系统时间
timedatectl # 查看当前时间和时区
# 若时间错误,同步时间:
timedatectl set-timezone Asia/Shanghai # 设置时区(示例:上海)
timedatectl set-ntp true # 开启NTP时间同步
3. 排查防火墙/SELinux
# 临时关闭防火墙测试(生产环境需谨慎,建议精确开放443端口)
systemctl stop firewalld
# 临时关闭SELinux
setenforce 0
# 重新执行dnf命令,若成功则需调整防火墙/SELinux策略:
# 防火墙开放443端口:
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
# SELinux允许网络连接(若需):
setsebool -P httpd_can_network_connect 1
4. 配置代理(若需)
在 /etc/dnf/dnf.conf
中添加代理(替换为实际代理地址):
proxy=http://proxy.example.com:8080
proxy_username=user # 若需认证
proxy_password=pass
或通过环境变量临时配置:
export http_proxy=http://proxy:port
export https_proxy=https://proxy:port
5. 替换国内镜像源(备选方案)
若官方源长期访问困难,可改用阿里云Docker镜像源:
- 创建
/etc/yum.repos.d/docker-ce.repo
,内容如下:[docker-ce] name=Docker CE Repository baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
- 执行
dnf clean all && dnf makecache
重建缓存。
通过以上步骤,可解决绝大多数因网络、证书、环境限制导致的Docker仓库配置失败问题。若仍报错,可结合 curl -v
的详细输出进一步定位(如代理证书、协议版本等更细节的SSL错误)。
结论:修改阿里云试试
无法hello world
从报错 net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
来看,Docker 拉取 hello-world
镜像时因网络超时失败。以下是核心原因及解决方法:
一、核心原因:网络访问受限
Docker 默认从 Docker Hub(国外服务器) 拉取镜像,国内网络存在以下问题:
- 网络延迟高:跨国链路不稳定,导致请求超时。
- 访问被限制:部分网络环境(如公司内网、防火墙)阻止了对 Docker Hub 的访问。
二、分步排查与解决
1. 检查 Docker 服务是否正常运行
虽然你执行了 systemctl start docker
,但需确认服务状态:
systemctl status docker # 查看服务状态,应为 "active (running)"
若服务未启动,重新启动并设置开机自启:
systemctl start docker
systemctl enable docker # 避免下次开机需手动启动
2. 测试网络连通性
验证主机能否访问 Docker Hub:
ping www.docker.com # 测试域名解析和网络连通
curl https://registry-1.docker.io/v2/ # 测试 Docker Hub API 访问
- 若 ping 不通或 curl 无响应:
说明主机网络本身有问题(如虚拟机未联网、物理机断网),需先解决网络连接问题(如检查虚拟机网络模式、重启路由器等)。
3. 配置国内镜像加速器(关键解决方法)
国内镜像源(如阿里云、网易)可加速镜像拉取,绕过网络瓶颈。以 阿里云镜像加速器 为例:
① 获取专属加速地址:
登录 阿里云容器镜像服务,复制你的专属 registry-mirrors
地址(需登录阿里云账号,免费)。
② 修改 Docker 配置:
创建/编辑 Docker 配置文件 /etc/docker/daemon.json
:
sudo mkdir -p /etc/docker # 若目录不存在则创建
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"] # 替换为你的加速地址
}
EOF
若没有阿里云账号,也可临时使用公共镜像源(如USTC):
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
③ 重启 Docker 服务:
sudo systemctl daemon-reload # 重新加载配置
sudo systemctl restart docker # 重启 Docker
4. 清理 Docker 缓存(可选)
若之前拉取镜像时发生中断,缓存可能损坏,可清理后重试:
docker system prune -a # 删除未使用的镜像、容器、网络(注意:会删除所有未运行的资源,谨慎操作)
5. 查看 Docker 日志(深度排查)
若以上步骤仍失败,查看 Docker 守护进程日志,定位具体错误:
sudo journalctl -u docker # 查看 Docker 服务日志,筛选网络相关报错
三、额外注意事项
- 权限问题:若普通用户运行
docker
命令报错,需将用户加入docker
组(或始终用sudo
):sudo usermod -aG docker $USER # 添加当前用户到 docker 组,需重新登录生效
- Docker 版本:若系统内置的 Docker 版本过旧,可参考 Docker 官方文档 升级到最新版。
按照以上步骤,90% 的 “拉取超时” 问题可通过 配置国内镜像源 解决。若仍失败,需结合日志判断是否为网络运营商限制、防火墙规则等更复杂的网络问题。
本地没有
所以:找第三方插件
https://dockerproxy.github.io/#/index
网速比较慢但是打的开
结论:有bug
拉取成功,nm复制有错别字导致失败