关于解决虚拟机ubuntu系统中Docker拉取镜像报错问题

先看报错问题:

Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

我运行的命令是: sudo docker run hello-world 就是简单的拉取镜像然后运行镜像

 问题出现之后:

我把问题定位到了   “网络

然后我开始关注虚拟机的虚拟网络模式:

        有三种:

一般来说 虚拟机会自动的选择桥接模式,此时你需要将他改成NAT模式 --》就是VMnet8

当你选择之后你需要确定一点,你需要看他的子网和网关是否对应你的宿主机

怎样看你的宿主机的网络信息呢?首先打开控制面板搜索网络和Internet根据以下路径去点击他的更改适配器设置 这个模块:

进去之后,跟着箭头操作:

我这边没有默认网关,好像是自动分配的,这里一般不会出问题,都是系统配置好的。

重要的一点是:你一定要是以一种net网络模式进去,如果不放心你可以选中你的创建的虚拟机 然后右键 设置:

进去之后你要先下载apt工具,下面是命令:

sudo apt install

有apt工具之后,下载文件编辑工具vim(我用的是这个):

sudo apt-get update

sudo apt-get install vim

 之后要对两个地方的文件进行修改(前提是你已经把docker下载好了):

更换镜像源
1、.修改/etc/docker/daemon.json文件,没有的新建即可

sudo vim /etc/docker/daemon.json

 2、添加如下配置

{
    "registry-mirrors": [
    "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
    "https://docker.m.daocloud.io",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://your_preferred_mirror",
    "https://dockerhub.icu",
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc"
    ]
}

3、重新加载配置文件

systemctl daemon-reload

4、重启docker服务 

systemctl restart docker

镜像配置完之后,还有一个地方就是这个路径下的这个文件“ /etc/resolv.conf ”

        如果不存在,则创建文件

sudo mkdir /etc/resolv.conf

        并编辑添加以下内容:

sudo vim /etc/resolv.conf

 添加内容:

nameserver 8.8.4.4

nameserver 8.8.8.8

添加成功后的内容是这样的:(看红框里面的内容就行)

就是这样。现在,您可以拉取 docker。

当然在这之前我也试过 通过网络代理的方式去解决这个问题,但最终我实在是不理解他的这个第四步代理的域名是怎么找到的 ,所以就不了了之了,如果你的问题还没有解决,你可是试试网络代理的方式(这里你可以看一下这位网友的文章):彻底解决docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled 报错_docker 配置阿里镜像 request canceled-优快云博客

当然我上面解决这个问题的思路是来自这个网站的,你可以进行参考 :20.04 - docker:来自守护进程的错误响应:Get https://registry-1.docker.io/v2/:net/http:等待连接时请求已取消 - 询问 Ubuntu

### 解决 Docker Ubuntu 24.04 镜像遇到的超问题 当面对 `docker pull ubuntu:24.04` 命令执行过程中出现的超情况,可以考虑通过配置本地缓存代理服务器的方式加速下载过程。具体而言,利用 `apt-cacher-ng` 可以为多个客户端提供统一的APT包管理服务,从而减少对外部网络资源的需求并提高获速度。 #### 安装与配置 apt-cacher-ng Server 为了设置一个高效的 APT 缓存服务器,在一台机器上安装 `apt-cacher-ng` 并做适当调整: ```bash sudo apt update && sudo apt install apt-cacher-ng -y echo 'PassThroughPattern: .*' | sudo tee -a /etc/apt-cacher-ng/acng.conf sudo systemctl restart apt-cacher-ng.service && sudo systemctl enable apt-cacher-ng.service du -sh /var/cache/apt-cacher-ng/ ``` 上述命令序列完成了软件包的安装、允许所有模式匹配以及启动和启用该服务[^1]。 对于希望连接到此缓存服务器的工作站来说,则需修改其Apt源配置文件以指向新建立的服务端口: ```bash echo 'Acquire::http::Proxy "http://<your_server_ip>:3142";' | sudo tee /etc/apt/apt.conf.d/01acng ``` 请注意替换 `<your_server_ip>` 为实际部署了 `apt-cacher-ng` 的主机地址。 #### 应用于 Docker 环境中的方法 针对 Docker 用户场景下的应用,可以在构建镜像之前先确保宿主机已经正确设置了 Apt Cache Proxy 设置;之后创建自定义的 Dockerfile 或者直接运行带有环境变量覆盖默认行为的容器实例来指定 HTTP_PROXY 和 HTTPS_PROXY 参数值如下所示: ```dockerfile FROM ubuntu:latest ENV http_proxy=http://<your_server_ip>:3142 \ https_proxy=http://<your_server_ip>:3142 RUN apt-get update && apt-get upgrade -y ``` 或者在特定版本如ubuntu:24.04前临设定这些参数: ```bash export http_proxy="http://<your_server_ip>:3142" export https_proxy="http://<your_server_ip>:3142" docker pull ubuntu:24.04 ``` 这样做不仅能够加快基础层和其他依赖项的下载速率,而且还可以显著降低因公共仓库不稳定而导致的操作失败风险。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值