转载备份
影子 DOM(Shadow DOM)
你的 docker stop,它优雅吗? - 无糖拿铁,谢谢
清理Docker的container,image与volume · 零壹軒·笔记
Create a PyPI Mirror Site with devpi-server – SRE
优雅的终止 docker 容器 | iTimothy
Odoo 14 开发者指南第二十一章 性能优化 | Alan Hou 的个人博客
Odoo 14 开发者指南第八章 高级服务端开发技巧 | Alan Hou 的个人博客
kafka 系列:设置日志数据保存过期时间(含某个 topic)、日志策略_NIO4444-CSDN 博客_kafka 配置数据过期时间
Chromium 历史版本离线安装包 - 下载方法
怎样将 props 传递给 {this.props.children} | WebFuse
HappyBaseDoc
用户指南 — HappyBase 1.2.0 文档
安装指南 — HappyBase 1.2.0 文档
API 参考 — HappyBase 1.2.0 文档
PostgreSQL 时间转换
JS 中创建给定长度的数组
GSAP 入门 - 学习中心 - 绿袜
操作系统复习 | Happy Coding
如何理解 ip 路由和操作 linux 的路由表 - CodeAntenna
Elasticsearch 7.11 tokenizer, analyzer and filter 以及 IK 分词配置同义词、远程拓展词库 – Brave new world
podman 容器内访问 host 主机的端口 - 知识库 - BSMI KB 基础标准矿产工业
吐血总结!100 道经典 Python 面试题集锦上(附答案)
中共党史简表(1919 年 - 1949 年)
Dockerfile 详解_万 wu 皆可爱的博客 - CSDN 博客_dockerfile
为你的 Python 应用选择一个最好的 Docker 映像 | 亚马逊 AWS 官方博客
Ubuntu Server 支持中文
docker push | Docker Documentation
docker 创建本地仓库详解 (push/pull)_乱红飞的博客 - CSDN 博客_docker push 本地仓库
基于 Ubuntu 20.04 安装 Kubernetes 1.18
PostgreSQL 集群篇——PostgreSQL 的配置文件解析_51CTO 博客_postGresql
【PostgreSQL】——主从流复制_Teingi 的博客 - CSDN 博客_postgresql 主从复制
PostgreSQL: Documentation: 14: 27.4. Hot Standby
postgresql 主从复制、主从切换_偷懒的小陈的博客 - CSDN 博客_postgresql 主从
Postgres 用户、角色与权限 :: 68hub — 技术博客
中国共产党第二十次全国代表大会在京开幕 一图速览二十大报告
配置 docker 通过代理服务器拉取镜像
IPVS no destination available - Kubernetes 实践指南
Python 风格规范 — Google 开源项目风格指南
互动测试!党的二十大报告 100 题
自定义 ESlint 规则
Java 读取 OpenSSL 生成的秘钥, 进行 RSA 加解密 | 数字魔法
CSS(一)chrome 浏览器表单自动填充默认样式 - autofil_半个 GIS 半个前端的博客 - CSDN 博客
Nginx 多级代理下的真实 IP 透传 - CodeAntenna
Jenkins 环境变量
人民币金额大写规范 - 内蒙古农业大学财务处
[转]nginx 开启 websocket - 浅忆博客
ceph 创建使用 rbd
《三》配置 ceph 存储池 pool - Buxl's blog
基于 K8S 搭建 Ceph 分部署存储 – 唐玥璨 | 博客
序言 · Kubernetes 中文指南——云原生应用架构实战手册
服务器配置 - Redis 安装配置 | 灰帽子 - 任令仓的技术博客
Ubuntu 配置 sudo 命令不需要输入密码_ubuntu sudo 免密_一路向前 - 执着的博客 - CSDN 博客
修改 Docker 数据目录位置,包含镜像位置 - 腾讯云开发者社区 - 腾讯云
微服务架构实践(API Gateway)
微服务网关:从对比到选型,由理论到实践 | Java 程序员进阶之路
聊聊微服务网关
微服务网关:从对比到选型,由理论到实践
odoo 实现表分区 partition
使用 keepalived 搭建高可用服务 - 简书
业务网关的落地实践_文化 & 方法_Qunar 技术沙龙_InfoQ 精选文章
部署 Kubernetes PostgreSQL 实例 | domac 的菜园子
一套包含完整前后端的系统如何在 K8S 中部署?_k8s 前端_木讷大叔爱运维的博客 - CSDN 博客
前端安全系列(二):如何防止 CSRF 攻击? - 美团技术团队
traefik 自定义中间件 | coolcao 的小站
CSRF 原理和实战利用 - FreeBuf 网络安全行业门户
安全运维 - 如何在 Kubernetes 中使用注释对 ingress-nginx 及后端应用进行安全加固配置实践_唯一极客知识分享的技术博客_51CTO 博客
Kubernetes 进阶使用之 Helm,Kustomize
各种加密算法比较
Docker 的三种网络代理配置 · 零壹軒 · 笔记
本文档使用 MrDoc 发布
-
+
home page
配置 docker 通过代理服务器拉取镜像
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [www.lfhacks.com](https://www.lfhacks.com/tech/pull-docker-images-behind-proxy/) 如果 docker 所在的环境是通过代理服务器和互联网连通的,那么需要一番配置才能让 docker 正常从外网正常拉取镜像。然而仅仅通过配置环境变量的方法是不够的。本文结合已有文档,介绍如何配置代理服务器能使 docker 正常拉取镜像。 本文使用的 docker 版本是 19.03 问题现象 ---- 如果不配置代理服务器就直接拉镜像,docker 会直接尝试连接镜像仓库,并且连接超时报错。如下所示: ``` $ docker pull busybox 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) ``` 容易误导的官方文档 --------- 有这么一篇关于 docker 配置代理服务器的 [官方文档](https://docs.docker.com/network/proxy/#configure-the-docker-client) ,如果病急乱投医,直接按照这篇文章配置,是不能成功拉取镜像的。 我们来理解一下这篇文档,文档关键的原文摘录如下: > If your container needs to use an HTTP, HTTPS, or FTP proxy server, you can configure it in different ways: Configure the Docker client On the Docker client, create or edit the file ~/.docker/config.json in the home directory of the user that starts containers. > > … > > When you create or start new containers, the environment variables are set automatically within the container. 这篇文档说:如果你的容器需要使用代理服务器,那么可以以如下方式配置: 在运行容器的用户 home 目录下,配置 `~/.docker/config.json` 文件。重新启动容器后,这些环境变量将自动设置进容器,从而容器内的进程可以使用代理服务。 所以这篇文章是讲如何配置运行容器的环境,与如何拉取镜像无关。如果按照这篇文档的指导,如同南辕北辙。 要解决问题,我们首先来看一般情况下命令行如何使用代理。 环境变量 ---- 常规的命令行程序如果要使用代理,需要设置两个环境变量:`HTTP_PROXY` 和 `HTTPS_PROXY` ,设置环境变量的方法见 [这篇文章](https://www.lfhacks.com/test/cypress-download-failure#env) 。但是仅仅这样设置环境变量,也不能让 docker 成功拉取镜像。 我们仔细观察 [上面的报错信息](#problem),有一句说明了报错的来源: > Error response from daemon: 因为镜像的拉取和管理都是 docker daemon 的职责,所以我们要让 docker daemon 知道代理服务器的存在。而 docker daemon 是由 systemd 管理的,所以我们要从 systemd 配置入手。 正确的官方文档 ------- 关于 systemd 配置代理服务器的 [官方文档在这里](https://docs.docker.com/config/daemon/systemd/#httphttps-proxy),原文说: > The Docker daemon uses the HTTP_PROXY, HTTPS_PROXY, and NO_PROXY environmental variables in its start-up environment to configure HTTP or HTTPS proxy behavior. You cannot configure these environment variables using the daemon.json file. > > This example overrides the default docker.service file. > > If you are behind an HTTP or HTTPS proxy server, for example in corporate settings, you need to add this configuration in the Docker systemd service file. 这段话的意思是,docker daemon 使用 `HTTP_PROXY`, `HTTPS_PROXY`, 和 `NO_PROXY` 三个环境变量配置代理服务器,但是你需要在 systemd 的文件里配置环境变量,而不能配置在 `daemon.json` 里。 具体操作 ---- 下面是来自 [官方文档](#correct) 的操作步骤和详细解释: 1. 创建 dockerd 相关的 systemd 目录,这个目录下的配置将覆盖 dockerd 的默认配置 ``` $ sudo mkdir -p /etc/systemd/system/docker.service.d ``` 2. 新建配置文件,这个文件中将包含环境变量 ``` /etc/systemd/system/docker.service.d/http-proxy.conf ``` 3. 如果你自己建了私有的镜像仓库,需要 dockerd 绕过代理服务器直连,那么配置 `NO_PROXY` 变量: ``` [Service] Environment="HTTP_PROXY=http://proxy.example.com:80" Environment="HTTPS_PROXY=https://proxy.example.com:443" Environment="NO_PROXY=your-registry.com,10.10.10.10,*.example.com" ``` 多个 `NO_PROXY` 变量的值用逗号分隔,而且可以使用通配符(*),极端情况下,如果 `NO_PROXY=*`,那么所有请求都将不通过代理服务器。 4. 重新加载配置文件,重启 dockerd ``` $ sudo systemctl daemon-reload $ sudo systemctl restart docker ``` 5. 检查确认环境变量已经正确配置: ``` $ sudo systemctl show --property=Environment docker ``` 6. 从 `docker info` 的结果中查看配置项。 ![](/media/202210/2022-10-17_112008_9324320.43009123081139633.png) 这样配置后,应该可以正常拉取 docker 镜像。 结论 -- docker 镜像由 docker daemon 管理,所以不能用修改 shell 环境变量的方法使用代理服务,而是从 systemd 角度设置环境变量。 参考资料 ---- 1. [https://stackoverflow.com/questions/69047394/cant-pull-docker-image-behind-a-proxy](https://stackoverflow.com/questions/69047394/cant-pull-docker-image-behind-a-proxy) 2. [https://mikemylonakis.com/unix/docker-proxy/](https://mikemylonakis.com/unix/docker-proxy/) 3. [https://docs.docker.com/config/daemon/systemd/](https://docs.docker.com/config/daemon/systemd/)
幻翼
Oct. 18, 2022, 11:47 a.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
share
link
type
password
Update password