给 Docker 配置网络代理

news2024/11/5 13:46:33

参考

https://www.cnblogs.com/Chary/p/18096678

如何优雅的给 Docker 配置网络代理
有时因为网络原因,比如公司 NAT,或其它啥的,需要使用代理。Docker 的代理配置,略显复杂,因为有三种场景。但基本原理都是一致的,都是利用 Linux 的 http_proxy 等环境变量。

Dockerd 代理
在执行docker pull时,是由守护进程dockerd来执行。因此,代理需要配在dockerd的环境中。而这个环境,则是受systemd所管控,因此实际是systemd的配置。

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf
在这个proxy.conf文件(可以是任意*.conf的形式)中,添加以下内容:

[Service]
Environment=“HTTP_PROXY=http://proxy.example.com:8080/”
Environment=“HTTPS_PROXY=http://proxy.example.com:8080/”
Environment=“NO_PROXY=localhost,127.0.0.1,.example.com”
其中,http://proxy.example.com:8080 要换成可用的免密代理。通常使用 cntlm 在本机自建免密代理,去对接公司的代理。可参考《Linux下安装配置Cntlm 代理》。

Container 代理
在容器运行阶段,如果需要代理上网,则需要配置 ~/.docker/config.json。以下配置,只在Docker 17.07及以上版本生效。

{
“proxies”:
{
“default”:
{
“httpProxy”: “http://proxy.example.com:8080”,
“httpsProxy”: “http://proxy.example.com:8080”,
“noProxy”: “localhost,127.0.0.1,.example.com”
}
}
}
这个是用户级的配置,除了 proxies,docker login 等相关信息也会在其中。而且还可以配置信息展示的格式、插件参数等。

此外,容器的网络代理,也可以直接在其运行时通过 -e 注入 http_proxy 等环境变量。这两种方法分别适合不同场景。config.json 非常方便,默认在所有配置修改后启动的容器生效,适合个人开发环境。在CI/CD的自动构建环境、或者实际上线运行的环境中,这种方法就不太合适,用 -e 注入这种显式配置会更好,减轻对构建、部署环境的依赖。当然,在这些环境中,最好用良好的设计避免配置代理上网。

Docker Build 代理
虽然 docker build 的本质,也是启动一个容器,但是环境会略有不同,用户级配置无效。在构建时,需要注入 http_proxy 等参数。

docker build .
–build-arg “HTTP_PROXY=http://proxy.example.com:8080/”
–build-arg “HTTPS_PROXY=http://proxy.example.com:8080/”
–build-arg “NO_PROXY=localhost,127.0.0.1,.example.com”
-t your/image:tag
注意:无论是 docker run 还是 docker build,默认是网络隔绝的。如果代理使用的是 localhost:3128 这类,则会无效。这类仅限本地的代理,必须加上 --network host 才能正常使用。而一般则需要配置代理的外部IP,而且代理本身要开启 Gateway 模式。

粉丝福利, 免费领取C/C++ 开发学习资料包、技术视频/代码,1000道大厂面试题,内容包括(C++基础,网络编程,数据库,中间件,后端开发,音视频开发,Qt开发,游戏开发,Linux内核等进阶学习资料和最佳学习路线)↓↓↓↓有需要的朋友可以进企鹅裙927239107领取哦~↓↓

重启生效
代理配置完成后,reboot 重启当然可以生效,但不重启也行。

docker build 代理是在执行前设置的,所以修改后,下次执行立即生效。Container 代理的修改也是立即生效的,但是只针对以后启动的 Container,对已经启动的 Container 无效。

dockerd 代理的修改比较特殊,它实际上是改 systemd 的配置,因此需要重载 systemd 并重启 dockerd 才能生效。

sudo systemctl daemon-reload
sudo systemctl restart docker
如何配置docker通过代理服务器拉取镜像 - 醉马踏千秋 - 博客园

如何配置docker通过代理服务器拉取镜像

如果 docker 所在的环境是通过代理服务器和互联网连通的,那么需要一番配置才能让 docker 正常从外网正常拉取镜像。然而仅仅通过配置环境变量的方法是不够的。本文结合已有文档,介绍如何配置代理服务器能使docker正常拉取镜像。

本文使用的docker 版本是

docker --version
Docker version 24.0.2, build cb74dfc
问题现象
如果不配置代理服务器就直接拉镜像,docker 会直接尝试连接镜像仓库,并且连接超时报错。如下所示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2233601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Visual Studio | 配置管理

文章目录 一、配置管理1、项目属性1.1、常规1.2、VC 目录1.3、C/C -> 常规1.4、C/C -> 预处理器1.5、C/C -> 预编译头1.6、连接器 -> 常规1.7、连接器 -> 输入 2、编辑2.1、显示空格或tab符 一、配置管理 1、项目属性 1.1、常规 字段功能目标平台版本用于生成…

如何将VMware ESXi中的虚拟机迁移到Workstation

我们前面介绍了如何将VMware workstation中的虚拟机迁移到ESXi中(将OpenWrt 23.05.3部署到VMware ESXi),那怎么将ESXi中的虚拟机迁移到workstation中呢? 首先,我们回顾一下,在将workstation中的虚拟机迁移到…

电脑如何不断网切换IP:实用方法与注意事项‌

在数字化时代,网络已成为我们生活和工作中不可或缺的一部分。然而,有时我们可能需要在保持网络连接的同时,切换电脑的IP地址,以满足特定的需求,如绕过地域限制、提升网络安全性或进行网络测试。本文将详细介绍如何在不…

【编译器】KEIL 静态链接库和动态链接库

【编译器】KEIL 静态链接库和动态链接库 文章目录 [TOC](文章目录) 前言一、工程1——生成静态链接库1. 代码准备2. 生成lib文件 二、工程2——调用静态链接库1.添加.h文件路径2. 调用生成的lib文件 三、参考资料总结 前言 提示:以下是本篇文章正文内容,…

【Linux】编辑器vim 与 编译器gcc/g++

目录 一、编辑器vim: 1、对vim初步理解: 2、vim的模式: 3、进入与退出: 4、vim命令模式下的指令集: 移动光标: 删除: cv: 撤销: 其他: 5、vim底行模…

成都栩熙酷网络科技有限公司抖音小店电商新篇章

在数字经济蓬勃发展的今天,电子商务行业迎来了前所未有的发展机遇。而在这股浪潮中,成都栩熙酷网络科技有限公司(以下简称“栩熙酷”)凭借其敏锐的市场洞察力和强大的技术实力,与抖音小店这一新兴电商平台携手共进&…

科研绘图系列:R语言组合连线图和箱线图(linechart+boxplot)

文章目录 介绍加载R包数据数据预处理画图1画图2系统信息介绍 连线图(Line Chart)是一种常用的数据可视化图表,它通过将一系列数据点用直线段连接起来来展示数据随时间或有序类别变化的趋势。以下是连线图可以表示的一些内容: 时间序列数据:展示数据随时间变化的趋势,例如…

征程 6 工具链性能分析与优化 2|模型性能优化建议

01 引言 为了应对低、中、高阶智驾场景,以及当前 AI 模型在工业界的应用趋势,地平线推出了征程 6 系列芯片。 在软硬件架构方面,征程 6 不仅保持了对传统 CNN 网络的高效支持能力,还强化了对 Transformer 类型网络的支持&#xf…

HarmonyOS第一课 07 从网络获取数据-习题

判断题 1. 在http模块中,多个请求可以使用同一个httpRequest对象,httpRequest对象可以复用:F 正确(True) 错误(False) 每次请求时,都需要一个新的httpReq对象 每次使用完,都需要destory对象 2. 使用on(type: headersReceive)订阅响应头事…

Kubernetes——part10-1 kubernetes日志收集方案 ELK

一、为什么收集日志 收集日志可以用于: 分析用户行为监控服务器状态增强系统或应用安全性等。 二、收集哪些日志 kubernetes集群节点系统日志kubernetes集群节点应用程序日志kubernetes集群中部署的应用程序日志 三、日志收集方案 3.1 日志收集技术栈ELK(ELKB…

windows MySQL报错Packet for query is too large问题解决

1、报错 Packet for query is too large (1626 > 1024). You can change this value on the server by setting the max_allowed_packet variable.出现问题的原因:批量插入数据量过大 MySQL根据配置文件会限制Server接受的数据包大小。有时候插入、更新或查询时…

dns服务部署

1.搭建dns服务器能够对自定义的正向或者反向域完成数据解析查询。 2.配置从DNS服务器,对主dns服务器进行数据备份。 第一步,安装bind服务以及关闭防火墙等 正反向解析 [rootlocalhost ~]# vim /var/named/named.openlab.com ------正向资源记录文件 …

ElMessageBox 内容自定义

1. ElmessageBox弹出框显示内容设置字体颜色: 代码内容: const saveToGroup (row: Customers) > {ElMessageBox.confirm(h("i",{ style: "color: #409EFF" },"未建档客户公司无法创建线索/商机/礼品申请。"),"…

学Linux的第五天

目录 命令解释器-shell-负责解析用户输入的命令 分类: type --查看命令是内置命令、外置命名、alias命令 注意 Linux 中的特殊符号 拓展 命令别名aliasalias 别名原命令 - 参数 常用的别名untar,wget,getpass,ping,speed,ipe,c 删除别名unalias…

JavaEE初阶---servlet篇(二)(smartTomcat的使用相关错误类型)

文章目录 1.servlet创建项目问题说明2.SamrtTomcat插件3.乱码问题的说明4.其他的错误类型说明4.1常见错误之4044.2常见错误之4054.3常见错误之5004.4空白页面/无法访问 1.servlet创建项目问题说明 servlet进行这个项目创建的时候,我们的这个web.xml里面的这个内容就…

Centos 网络接口打vlan标签

Centos 网络接口打vlan标签 本次使用给bond打vlan标签,其实其他普通接口也一样 Centos创建bond前需要关闭NetworkManager [root192 network-scripts]# systemctl disable NetworkManager --now Removed symlink /etc/systemd/system/multi-user.target.wants/Netwo…

使用Docker-Compose安装redis,rabbitmq,nacos,mysql,nginx,tomcat,portainer组件教程

因为开发经常会用到一些组件,又不想在本地启动,所以买了个服务器,然后将这些组件都安装到服务器上以便开发使用。下面就记录下使用docker-compose安装组件的教程以及一些需要注意的地方。 关于docker和docker-compose的安装在另一篇博客中有…

WPF+MVVM案例实战(二十二)- 制作一个侧边弹窗栏(CD类)

文章目录 1、案例效果1、侧边栏分类2、CD类侧边弹窗实现1、样式代码实现2、功能代码实现3 运行效果4、源代码获取1、案例效果 1、侧边栏分类 A类 :左侧弹出侧边栏B类 :右侧弹出侧边栏C类 :顶部弹出侧边栏D类 :底部弹出侧边栏2、CD类侧边弹窗实现 1、样式代码实现 在原有的…

解决 “Error: listen EACCES: permission denied 0.0.0.0:80“ 错误

前言 在开发过程中,我们经常会遇到各种各样的错误。其中一个常见的错误是 Error: listen EACCES: permission denied 0.0.0.0:80。这个错误通常发生在尝试启动一个开发服务器时,服务器试图绑定到80端口,但由于权限不足而失败。本文将详细介绍…

国产之光-海豚调度器的入门知识篇

目录 概念和定义 核心特性 核心组件 工作流程 环境准备 系统软件方面 硬件方面 部署方式 单机模式 伪集群模式 集群模式 基本配置 工作流定义 调度管理 定时调度 手动调度 监控告警 任务类型扩展 资源管理 权限控制 概念和定义 Apache DolphinScheduler是一…