当前位置: 首页 > news >正文

Docker加速下载镜像的配置指南

docker 加速下载

docker 下载会比较慢,即使挂了代理,在 Ubuntu 桌面环境的系统设置了启用网络代理(例如在 “Settings” -> “Network” -> “Network Proxy” 中设置的 HTTP/HTTPS 代理)也会很慢,这是因为代理并没有真正的生效,需要专门针对性的配置 docker 的代理。

原因如下:

  1. 独立的服务进程:Docker 守护进程 (dockerd) 是一个由 systemd 管理的后台系统服务。它在系统启动时运行,通常以 root 用户身份运行,并且不会继承你用户会话的环境变量
  2. 环境变量隔离:即使你的 shell 终端里 echo $https_proxy 能看到代理设置,这个变量只存在于你的用户会话中,Docker 守护进程的运行环境中是看不到的。

1. 查询当前 Shell 会话的环境变量

这是查询当前用户命令行环境中代理设置的最直接方法。

# 查询 HTTP 代理
echo $HTTP_PROXY
# 或 (注意大小写,有时是小写)
echo $http_proxy# 查询 HTTPS 代理
echo $HTTPS_PROXY
# 或
echo $https_proxy# 查询不需要代理的地址列表
echo $NO_PROXY
# 或
echo $no_proxy

说明

  • 如果你在 Ubuntu 设置中配置了代理,并且该设置被正确应用到了你的用户会话(例如通过 GNOME 的 gsettings),那么在你打开的终端中,这些环境变量通常会被自动设置。
  • 这个设置只对当前终端及其启动的程序有效systemd 服务(如 Docker)通常不会读取这些变量。

2. 检查 Docker 守护进程的环境变量:

sudo systemctl show docker --property=Environment

如果输出是空的或者不包含 HTTP_PROXYHTTPS_PROXY,那就说明 Docker 守护进程没有配置代理。


如果方法 1 有输出,如:

erge@erge-Lenovo-Legion-Y7000-1060:~$ # 查询 HTTP 代理
erge@erge-Lenovo-Legion-Y7000-1060:~$ echo $HTTP_PROXY
http://127.0.0.1:7890/
erge@erge-Lenovo-Legion-Y7000-1060:~$ # 或 (注意大小写,有时是小写)
erge@erge-Lenovo-Legion-Y7000-1060:~$ echo $http_proxy
http://127.0.0.1:7890/
erge@erge-Lenovo-Legion-Y7000-1060:~$
erge@erge-Lenovo-Legion-Y7000-1060:~$ # 查询 HTTPS 代理
erge@erge-Lenovo-Legion-Y7000-1060:~$ echo $HTTPS_PROXY
http://127.0.0.1:7890/
erge@erge-Lenovo-Legion-Y7000-1060:~$ # 或
erge@erge-Lenovo-Legion-Y7000-1060:~$ echo $https_proxy
http://127.0.0.1:7890/
erge@erge-Lenovo-Legion-Y7000-1060:~$
erge@erge-Lenovo-Legion-Y7000-1060:~$ # 查询不需要代理的地址列表
erge@erge-Lenovo-Legion-Y7000-1060:~$ echo $NO_PROXY
localhost,127.0.0.0/8,::1
erge@erge-Lenovo-Legion-Y7000-1060:~$ # 或
erge@erge-Lenovo-Legion-Y7000-1060:~$ echo $no_proxy
localhost,127.0.0.0/8,::1
erge@erge-Lenovo-Legion-Y7000-1060:~$

而方法 2 没有输出,说明 Docker 守护进程没有配置代理。


配置 docker 的代理

上面已经查出了代理的设置,需要将其写入 docker 的配置文件中。

🔧 步骤 1:为 Docker 创建 systemd 代理配置文件

打开终端,执行以下命令:

# 创建配置文件目录
sudo mkdir -p /etc/systemd/system/docker.service.d# 创建并编辑代理配置文件
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

✏️ 步骤 2:写入代理配置

在打开的 http-proxy.conf 文件中,粘贴或输入以下内容:

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.0/8,::1,*.local,*.internal"

🔁 步骤 3:应用配置并重启 Docker

保存文件并退出编辑器(在 nano 中,按 Ctrl+O 保存,按 Enter 确认,然后按 Ctrl+X 退出)。

然后执行:

# 重新加载 systemd 配置
sudo systemctl daemon-reload# 重启 Docker 服务,使新配置生效
sudo systemctl restart docker

✅ 步骤 4:验证配置是否成功

再次运行你之前用过的命令来检查 Docker 服务的环境变量:

sudo systemctl show docker --property=Environment

你应该看到类似这样的输出:

Environment=HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 NO_PROXY=localhost,127.0.0.0/8,::1,*.local,*.internal

🚀 步骤 5:测试 Docker 拉取

现在,尝试拉取镜像,速度应该会快很多:

docker pull ghcr.io/autowarefoundation/autoware:universe

image 拷贝:导出为 tar 文件

这是最通用的方法,将镜像保存为一个 .tar 文件,然后可以拷贝到 U 盘、另一台机器或通过网络传输。

  1. 导出(保存)镜像
    在你已经 docker pull 下载了镜像的机器上运行:

    docker save -o autoware_universe.tar ghcr.io/autowarefoundation/autoware:universe
    
    • 这会创建一个名为 autoware_universe.tar 的文件,包含了完整的镜像数据(包括所有层和元数据)。
    • 你也可以使用镜像的 IMAGE ID 来保存:docker save -o autoware_universe.tar abc123def456
  2. 拷贝文件
    将生成的 autoware_universe.tar 文件拷贝到目标位置(如 U 盘、另一台服务器)。

  3. 导入(加载)镜像
    在目标机器上(需要安装 Docker),运行:

    docker load -i autoware_universe.tar
    
    • 镜像加载完成后,就可以用 docker images 看到它,并用 docker run 启动容器了。

docker 下载运行

1. 下载镜像

docker pull <image_name>:<tag>
2. 运行容器

docker run <image_name>:<tag>
注意:docker run 会自动检查本地是否存在镜像,不存在则自动下载

docker 查看指令

目的命令
查看正在运行的容器docker ps
查看所有 (all) 容器(含停止的)docker ps -a
查看本地所有镜像docker imagesdocker image ls
查看 Docker 系统信息docker info
查看磁盘占用docker system df
查看容器详细信息docker inspect <容器名>
容器正在运行,想进入查看docker exec -it

http://www.xdnf.cn/news/1481113.html

相关文章:

  • 计算机网络:物理层---数据通信基础知识
  • 【C++ 11 模板类】tuple 元组
  • 嵌入式笔记系列——UART:TTL-UART、RS-232、RS-422、RS-485
  • 旧电脑改造linux服务器2:安装系统
  • 软考中级习题与解答——第二章_程序语言与语言处理程序(3)
  • AD渗透中服务账号相关攻击手法总结(Kerberoasting、委派)
  • 数据仓库概要
  • 【selenium】网页元素找不到?从$(‘[placeholder=“手机号“]‘)说起
  • PyQt5 入门(上):开启 GUI 编程之旅
  • python advance -----object-oriented
  • URI与URL区别:资源ID和地址差异
  • Vue3中Vite的介绍与应用
  • 第1课:开篇:RAG技术与DeepSeek模型全景导读
  • Cloudflare for SaaS 实现 CNAME 接入 CDN 支持国内外智能分流建站
  • AI Agent侵入办公室
  • Android Audio Patch
  • 长尾关键词优化驱动SEO流量增长
  • 链动2+1模式:全渠道整合与用户角色化的商业逻辑与行为动机探析
  • ElasticSearch原理
  • CAN总线学习
  • HarmonyOS:通过组件导航设置信息提醒
  • 贪心算法应用:机器人路径平滑问题详解
  • 9月6日笔记
  • 让机器具有主动性-主动性算法[01]
  • HuggingFace Trainer(回调可视化)
  • 木棉EZ100-Pro 15.5G矿机参数解析:Etchash算法与高效能耗
  • Day27 函数2 装饰器
  • 【Redis】--持久化机制
  • 2025年服装工厂高效管理系统解决方案优选指南
  • 华为悦盒EC6108V9/EC6108V9U/EC6108V9C_MV100(pub普通版/CA高安版)卡刷和强刷固件包