docker设置代理解决内网pull外网镜像

目录

Docker 配置代理的缘由

通过dockerd配置实现代理

通过container配置实现代理

参考文献


Docker 配置代理的缘由

        如何在内网环境内环境内Pull外网registry,或者反过来想要Pull公司Registry镜像?存在上述需求的朋友可以尝试以下方法进行docker代理配置。其中配置dockerd代理的方式遇到了些坑,即解决了通过配置文件docker.service.d/http-proxy.conf代理无效的问题。先来回顾下docker的架构设计。

        Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境Docker基于客户端-服务器架构,客户端与 Docker 守护进程通信,服务端负责构建、运行和分发Docker容器等繁重的工作。Docker 客户端和守护进程可以运行在同一个系统上,也可以连接到一个远程 Docker 守护进程。两者通过 UNIX 套接字或网络接口使用 REST API 进行通信。【以上引自:Docker简要教程 - 知乎 (zhihu.com)】

        综上,docker配置网络代理需要在其守护进程dockerd的启动环境中,而无法通过操作系统本身的环境变量实现代理配置。下述主要介绍两种方法实现docker代理。

通过dockerd配置实现代理

  目前常见的方法是通过systemd service设置docker代理,具体步骤如下:

# 创建/etc/systemd/system/docker.service.d路径
sudo mkdir -p /etc/systemd/system/docker.service.d
# 创建 http-proxy.conf
sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf
# 写入配置
vim /etc/systemd/system/docker.service.d/http-proxy.conf
# 粘贴下方配置代理并wq退出
[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"

  配置完成后需要重启docker服务以使其生效:

sudo systemctl daemon-reload 
sudo systemctl restart docker

  问题是我这样设置后代理并未成功,经过如下设置后才配置成功:

# edit config file
cd /lib/systemd/system && sudo vim docker.service
# add proxy setting
Environment=HTTP_PROXY=http://user:password@10.70.80.900:8080/
Environment=HTTPS_PROXY=http://user:password@10.70.80.900:8080/
Environment=NO_PROXY=localhost, 127.0.0.1, ::1, 10.9*

        前面配置未生效的原因不确定,分析原因可能和systemd的配置文件相关,但理论上通过/etc/systemd/system的配置优先级高会覆盖/lib/systemd/system,但事实并未覆盖。小弟Linux系统了解比较浅,下方引用了systemd的参考文献,这个问题可供大家一起探讨。

        在一般的使用场景下,每一个 Unit(服务等) 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit 。systemd 的使用大幅提高了系统服务的运行效率, 而 unit 的文件位置一般主要有三个目录:

  • /lib/systemd/system
  • /run/systemd/system
  • /etc/systemd/system

        这三个目录的配置文件优先级依次从高到低,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。​​​​​​​系统安装时,默认会将 unit 文件放在/lib/systemd/system目录。如果我们想要修改系统默认的配置,比如nginx.service,一般有两种方法:

  • /etc/systemd/system目录下创建nginx.service文件,写入
  • /etc/systemd/system​​​​​​​下面创建nginx.service.d目录,在目录里创建.conf 文件写入配置

    块引自:/etc/systemd/system 和 /lib/systemd/system 的区别 - 知乎 (zhihu.com)

通过container配置实现代理

  相当于在启动的container内设置环境变量,最简单的方法是在创建容器时添加环境变量env:

docker run -d --env HTTP_PROXY="http://user:psd@ip:port" --env HTTPS_PROXY="http://user:psd@ip:port" --name test_container image:v0.0.1

  另个方法是配置~/.docker/config.json文件:

# cat ~/.docker/config.json
{"proxies":{"default":{"httpProxy": "http://127.0.0.1:7890","httpsProxy": "http://127.0.0.1:7890","noProxy": "localhost"}}
}

   配置完成后需要重启docker服务以使其生效:

sudo systemctl daemon-reload 
sudo systemctl restart docker

参考文献

详解 Docker 的三种网络代理配置 - Roc's Blog (havemail.cn)

Docker 配置代理 - SnailRush - 博客园 (cnblogs.com)

Docker配置代理 - 码农教程 (manongjc.com)

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

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

相关文章

java访问mdb文件隐藏表报错解决办法:user lacks privilege or object not found: MSYSOBJECTS

java访问mdb文件隐藏表报错解决办法: UCAExc:::5.0.1 user lacks privilege or object not found: MSYSOBJECTS 在地址url中添加;sysSchematrue 在sql语句中添加sys.MSysObjects 写法 在地址url中添加;sysSchematrue 在sql语句中添加sys.MSysObjects 写法数据库访…

高校实验室智能管理

运行环境: jdk7tomcat7mysqleclipse 技术: springhibernatestruts2jspjquery 功能介绍: 一套完整的实验室管理系统,系统支持用户的注册登陆,系统分为学生,教师,管理员三个角色,…

[BUG] Authentication Error

前言 给服务器安装了一个todesk,但是远程一直就是,点击用户,进入输入密码界面,还没等输入就自动返回了 解决 服务器是无桌面版本,或者桌面程序死掉了,重新安装就好 sudo apt install xorg sudo apt inst…

数据结构<1>——树状数组

树状数组,也叫Fenwick Tree和BIT(Binary Indexed Tree),是一种支持单点修改和区间查询的,代码量小的数据结构。 那神马是单点修改和区间查询?我们来看一道题。 洛谷P3374(模板): 在本题中,单点修改就是将某一个数加上…

有哪些简单好用、适合中小型企业的CRM系统?

阅读本文,你将了解:一、中小型企业对CRM系统的主要需求;二、盘点四款好用的CRM系统;三、CRM系统实施策略和优秀实践。 在快速变化的商业环境中,中小型企业面临着独特的挑战:如何在有限的资源下高效地管理客…

web安全思维导图(白帽子)

web安全思维导图(白帽子) 客户端脚本安全 服务端应用安全 白帽子讲web安全 安全运营体系建设

c++ 类继承中 using的作用

在C类继承中,using关键字用于引入基类中的成员函数或成员变量到派生类中。使用using关键字可以实现以下两种情况: 继承并重用基类的成员函数:通过在派生类中使用using关键字,可以将基类中的成员函数引入到派生类的作用域中&#x…

log4j:WARN Please initialize the log4j system properly的解决办法

背景:很多次创建新项目log4j都出现以下2个警告: log4j:WARN No appenders could be found for logger (org.springframework.boot.ApplicationServletEnvironment).log4j:WARN Please initialize the log4j system properly 网上查询都是在说缺少以下jar…

2、Line Charts折线图

可视化时间趋势 现在你已经熟悉了编码环境,是时候学习如何制作自己的图表了! 在本教程中,您将学习足够的Python来创建专业外观的折线图。然后,在接下来的练习中,您将使用您的最新技能处理真实世界的数据集。 本课程数据集夸克网盘下载链接:https://pan.quark.cn/s/a235ac…

数据管理平台Splunk Enterprise本地部署并结合内网穿透实现远程访问

文章目录 前言1. 搭建Splunk Enterprise2. windows 安装 cpolar3. 创建Splunk Enterprise公网访问地址4. 远程访问Splunk Enterprise服务5. 固定远程地址 前言 本文主要介绍如何简单几步,结合cpolar内网穿透工具实现随时随地在任意浏览器,远程访问在本地…

智能控制箱解决方案

一、建设背景 在数字时代的浪潮中,智能化的管理和操作已经成为各行业的共同追求。唯众物联网智能控制箱,是一款功能性强、使用安装简单的智能网络传输、温湿度监测、门锁控制综合系统。系统由I/O网络模块、传感器、管理后端、移动端APP组成,辅…

TArry TMap TSet

一.TArry 1. TArray<int32> MyArray; 增加 删除 改 查 2.TMap<int32, int32>MyMap; //TMap是一种键值对容器&#xff0c;里面的数据都是成对出现的(Key&#xff0c;Value),Value通过Key值来获取&#xff0c;且Key值不能重复&#xff0c;key值唯一。 增&#x…

idea——git提交到本地记录如何退回/删除

目录 一、git提交到本地记录如何退回/删除 一、git提交到本地记录如何退回/删除 git提交到本地记录&#xff0c;如下图【更新】记录&#xff0c;表示本次提交到git本地需要退回/删除的操作&#xff1a; 选中项目&#xff0c;右键点击【git】——>【Show History】——>…

微服务定时任务

Scheduled 是 Spring Framework 中的一个注解&#xff0c;用于安排方法定期执行或在特定时间点执行。 使用 Scheduled 注解的方法需要满足以下条件&#xff1a; 该方法必须是公共的&#xff08;public&#xff09;。该方法不应该返回任何值&#xff0c;或者返回一个可以忽略的…

Java数据结构与算法:二叉搜索树

Java数据结构与算法&#xff1a;二叉搜索树 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是二叉搜索树&#xff1f; 在计算机科学中&#xff0c;二叉搜索树…

基于SSM的影视创作论坛(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的影视创作论坛&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…

21.云原生之GitLab pipline语法(CI基础)

云原生专栏大纲 文章目录 gitlab-ci.yml 介绍GitLab中语法检测gitlab-ci.yml 语法job定义作业before_script和after_scriptstages定义阶段tages指定runnerallow_failure运行失败when控制作业运行retry重试timeout超时parallel并行作业only & exceptrulescache 缓存cache:p…

PolarDB 再升级:欢迎来到云数据库 x AI新时代

大模型时代&#xff0c;数据库的变化走到了哪&#xff1f; 作者|思杭 编辑|皮爷 出品|产业家 “搭积木”、“‘自动驾驶’”、“三层解耦”&#xff0c;这些形象的标签成了1月17日阿里云开发者生态大会当天最出圈的词汇。 会上&#xff0c;一名小学生受邀上台演示了数据…

3.jmeter接口关联及实战

1.当所传参数包含键值对和json文件时&#xff0c;键值对放在链接后&#xff0c;参数放在消息体数据中 2.当查看结果树返回乱码时&#xff0c;修改请求中内容编码为utf-8 一、jmeter接口关联 1.正则表达式提取器 接口2.3传递的参数中需要用到接口1的返回值 禁用接口2.3&#…

Elasticsearch:Simulate ingest API

Ingest pipeline 为我们摄入数据提供了极大的方便。在我之前的文章中&#xff0c;有非常多的有关 ingest pipeline 的文章。请详细阅读文章 “Elastic&#xff1a;开发者上手指南”。针对一组提供的文档执行摄取管道&#xff0c;可以选择使用替代管道定义。 Simulate ingest AP…