快速设置 Docker 的三种网络代理配置

2023-05-16

目录

  • Docker Client - 代理访问远程的 Docker Daemon
  • Docker Daemon - 代理拉取或推送国外镜像
  • Container - 容器内部代理访问国外资源

通过代理访问网络是一个比较头疼的事情,例如:想访问远程的 Docker Daemon 需要代理,想拉取或推送国外的镜像需要代理,想容器内部访问国外的资源又需要代理。

上面的场景是不是让你很头大,但是请想开点,这篇文章将让你通往自由的国度。保护你的头发,让你留出更多的时间去做该做的事情。

上面说的是三个场景就是针对于不同的网络代理需要,根据需要处理即可。

Docker Client - 代理访问远程的 Docker Daemon

参考 Docker 官方文档:Use the Docker command line

DockerClientDaemon 端是可以不在同一个机器上的,可以通过 docker -h 连接其他的 Docker Daemon
在这里插入图片描述
Client 端设置代理其实就是设置 Linux 系统的代理,从而让系统的命令行可以通过代理连接到外部的网络。一般只需要配置 HTTP_PROXYHTTPS_PROXY 这两个即可。

  • 临时生效: 在命令行中执行下面的命令,根据自己实际代理 IP 与代理端口设置(需要允许局域网连接):
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890
  • 永久生效,在系统变量中配置。系统变量配置有多个地方,例如在 /etc/profile 文件的底部添加下面的内容:
export https_proxy=http://127.0.0.1:7890 
export http_proxy=http://127.0.0.1:7890 

让配置文件生效:

source /etc/profile 

恭喜,Docker Client 代理配置完成!

Docker Daemon - 代理拉取或推送国外镜像

参考 Docker 官方文档:Control Docker with systemd

有的时候我们会用到一些国外的镜像,比如搭建 k8s 时会用到 k8s.gcr.io 提供的镜像,但是无法正常 pull;或者你想将某些镜像上传到国外的镜像仓库中,都需要使用代理进行操作。
在这里插入图片描述

注:Docker 守护程序(dockerd)是在其启动环境中使用 HTTP_PROXYHTTPS_PROXYNO_PROXY 环境变量来配置 HTTPHTTPS 代理行为,需要在 Docker systemd 服务文件中添加此配置。 在 daemon.json 文件或者是在系统环境变量文件中配置它们都不会使其生效。

要实现 Daemon 代理会比较复杂一些,并且下面的操作将覆盖默认的 docker.service 文件,这样当 Docker 启动的时候就会读取到下面的代理配置信息:

  1. /etc/systemd/system 目录下创建 docker.service.d 目录

    sudo mkdir -p /etc/systemd/system/docker.service.d
    
  2. 在该目录下创建 http-proxy.conf 文件

    sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf
    
  3. 选用你最喜欢的编辑器,编辑该文件并添加下面的内容,这里使用 vi/vim 进行编辑。

    vim /etc/systemd/system/docker.service.d/http-proxy.conf
    

    根据自身需要添加下面的内容并替换为实际的配置,一般只需要添加 HTTP_PROXYHTTPS_PROXY

    [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 用于代理访问 http 请求,HTTPS_PROXY 用于代理访问 https 请求,如果想某个 IP域名不走代理则配置到 NO_PROXY中。

    添加完成后,保存即可。

  4. 刷新更改并重新启动 Docker

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

恭喜,Docker Daemon 代理配置完成!

Container - 容器内部代理访问国外资源

参考 Docker 官方文档: Configure Docker to use a proxy server

该代理只针对于后续 build 或 run 的容器有效,已经创建好的不受影响。

主要是用于容器内部的网络访问。
在这里插入图片描述
本身容器就可以当做一个简化版的 Linux 系统,如果想实现容器内部的代理,则必须在容器内设置适当的环境变量。

  • 直接在容器内部进行修改,虽然也可以这样做,但是不是很推荐,如果不是测试使用,最好还是保证容器的完整性。

    如果是想要将该容器导出并移植到其他机器上去的话,那肯定是在容器内部修改环境变量导出。

  • Docker 17.06 及更早版本中,可以在构建映像(这会降低映像的可移植性)或创建或运行容器时通过指定参数来执行此操作。

  • Docker 17.07 及更高版本中Docker 提供了一个全局的配置可以通过配置 Docker 客户端以自动将代理信息传递给容器,从而让所有的容器内部都支持代理访问。

通过参数配置在这里就不多说了,无非就是命令的使用。这里主要说一下 Docker 17.07 及更高版本中的全局配置:

  1. Docker 客户端上,在启动容器的用户的主目录中创建或编辑文件 ~/.docker/config.json。 如果没有该目录或文件则使用相应的用户来创建。

    # 创建目录
    mkdir ~/.docker
    # 创建配置文件
    touch ~/.docker/config.json
    # 编辑配置文件
    vim ~/.docker/config.json
    

    根据自身需要添加下面的内容并替换为实际的配置,一般只需要添加 HTTP_PROXYHTTPS_PROXY 即可:

    {
     "proxies":
     {
       "default":
       {
         "httpProxy": "http://127.0.0.1:7890",
         "httpsProxy": "http://127.0.0.1:7890",
         "noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"
       }
     }
    }
    

    【注】HTTP_PROXY 用于代理访问 http 请求,HTTPS_PROXY 用于代理访问 https 请求,如果想某个 IP域名不走代理则配置到 NO_PROXY中。

    添加完成后,保存即可。

  2. 重新启动 Docker

    sudo systemctl restart docker
    

恭喜,Container 代理配置完成!

Roc’s Blog:详解 Docker 的三种网络代理配置

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速设置 Docker 的三种网络代理配置 的相关文章

  • gitee码云完整使用教程(部署与克隆)

    1 创建仓库 登录码云 Gitee 基于 Git 的代码托管和研发协作平台创建一个仓库 2 使用git在本地初始化 xff08 1 xff09 新建一个目录 xff0c 存放下载下来的项目 xff0c 我在D盘新建了一个 gitspace
  • 修改Win10右键菜单

    目录 前言一 Win10右键菜单类型二 删除第一种类型三 删除第二种类型更新 2023 4 17 一 关于7zip的右键选项过多二 补充几个右键菜单对应的名字 前言 在电脑装了很多软件后 xff0c 鼠标右键菜单选项也会变得特别多 xff0
  • xrdp完美实现Windows远程访问Ubuntu 16.04【包括多人桌面与原生桌面】

    xrdp完美实现Windows远程访问Ubuntu 16 04 前言 xff1a 在很多场景下 xff0c 我们需要远程连接到Linux服务器 本文是Ubuntu xff0c 传统的连接主要分为两种 第一种 xff1a 通过SSH服务 xf
  • SPI走线距离

    SPI总线的四根线中频率最高的CLK的时钟约系统主频的四分之一到二分之一之间 xff0c 约在5MHz到80MHz之间 xff0c 具体值需要看芯片的数据手册 如果芯片规定SPI的SCLK为20MHz xff0c 那么这个频率的波长是15米
  • Python使用Tesseract-OCR

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 tesseract ocr是什么 xff1f 二 Tesseract OCR 安装和使用1 引入库2 配置环境变量3 P
  • STM32F030 PB1引脚无法置高问题的解决

    一开始初始化代码如下 xff1a RCC APB2PeriphClockCmd RCC AHBPeriph GPIOB ENABLE 使能端口时钟 GPIO InitStructure GPIO Pin 61 GPIO Pin 1 GPIO
  • C++中string末尾追加char字符

    如果想在C 43 43 中的string类型末尾追加char字符 xff0c s span class token operator 61 span s span class token operator 43 span span clas
  • VMware设置虚拟机系统和主机系统在同一个网段内访问网络设备

    需要说明的是 xff0c 若主机是有线的网口连接设备 xff0c 则主机先关闭无线网络再打开虚拟机系统 xff0c 虚拟机系统即可正常连接设备 然后主机若需要使用无线网络再打开无线网络即可
  • 视频转GIF太模糊了吗?我来教你使用FFmpeg生成高清GIF!!!

    有钱能使鬼推磨 xff0c 昨天40多个阅读 xff0c 没有一个人给我实在是太惨了 xff0c 所以 xff0c 再来个第二弹吧 xff01 那么这次的主题 xff0c 就是教你如何通过视频生成高清的GIF图片 xff01 xff01 恩
  • PHP实现自定义if条件、动态if条件判断(店铺会员卡等级规则判断的实现)

    首先抛出一个问题 xff1a span class token comment 前端输入的字符 span span class token variable logic span span class token operator 61 s
  • Mac地址、IP、子网掩码、网关、DNS

    MAC xff08 Media Access Control 介质访问控制 xff09 MAC地址是烧录在Network Interface Card 网卡 NIC 里的 MAC地址 也叫物理地址或硬件地址 是由48比特长 xff0c 16
  • CSRF修复——看完的你多了一把刷子

    近期项目对漏洞修复这一块比较看重 xff0c 例举下CSRF的修复之路吧 提到我就心累 1 CSRF是什么 CSRF xff08 Cross Site Request Forgery 跨站域请求伪造 xff09 是一种网络的攻击方式 xff
  • 数据结构课设

    项目1 xff1a 中国计算机设计大赛赛事统计 设计目标 xff1a 1 xff0c 能统计各学校的总分 2 xff0c 能按照学校编号或者名称 xff0c 将学校的总分或者各项目的总分排序输出 3 xff0c 能够按照编号查询学校某个项目
  • idea往项目中添加jar包

    1 xff0c 项目中没有lib包则自行创建 xff0c 名字设为lib xff08 项目中已经有lib包则直接进入2 xff09 xff1b 2 xff0c 将下载好的jar包拖入刚刚创建好的lib文件包中 xff1b 3 xff0c 右
  • Windows10如何向GitHub上传文件夹?

    1 首先创建GitHub的账号 xff0c 建立好你的仓库 2 找到你的仓库 xff0c 点击 code 后点击 HTTPS 并对内容进行复制 xff0c 如下图所示 xff1a 3 下载安装git xff0c 官网下载后一直next傻瓜安
  • centos7安装tomcat9

    一 首先需要安装好jdk 1 通过yum search java grep jdk查看支持的jdk软件包 2 yum install y java 1 8 0 openjdk 安装你想要的jdk软件包 3 查看是否安装成功java vers
  • Linux的优点和缺点

    Linux的优点 xff1a 1 稳定的系统 xff1a Linux是基于Unix发展出来的操作系统 xff0c 继承了Unix的稳定并有效率的特点 经常听到安装Linux的主机连续运作一年以上而不当机 不必关机是稀松平常的事 2 免费 x
  • Effective C++条款(第三版-侯杰译)

    条款一 xff1a 视C 43 43 为一个语言联邦 C 43 43 高效编程守则视情况而变化 xff0c 取决于你使用的C 43 43 哪一部分 条款二 xff1a 尽量以const xff0c enum xff0c inline替换 d
  • obj * volatile *my_free_list ;

    今天看STL源码分析看到的一句话 xff1a obj volatile my free list 首先我们要明白一件事 xff1a volatile是一个特征修饰符 xff08 type specifier xff09 volatile的作
  • Linux下搭建路由器

    客户端1 xff1a CentOS6 9 客户端2 xff1a CentOS7 3 路由器 xff1a router1 xff08 CentOS7 3 xff09 router2 xff08 CentOS7 3 xff09 r router

随机推荐

  • linux 搭建FTP服务器

    FTP用于计算机之间通过网络进行文件传输 你可以通过FTP在计算机账户间进行文件传输 xff0c 也可以在账户和桌面计算机之间传输文件 xff0c 或者访问在线软件归档 服务器条件 xff1a 基于VM的Ubuntu虚拟机20 04 1 保
  • FileHandler文件处理

    FileHandler文件处理 xff0c 实行文件从临时目录保存到正式目录 生成图片对象的缩略图 获取文件信息等功能 实例 xff1a 实现用户头像图片的保存 xff0c 并生成对象的缩略图 1 创建filehandler xml文件 在
  • Error: 0x8007019e

    安装和启动 旧版本的 win10 需要在 控制面板 gt 程序 gt 启用或关闭Windows功能 勾选 适用于Linux的Windows子系统 Beta 由于现在这个功能已经不再是 beta 功能了 xff0c 只要保证你的 window
  • docker下gitlab安装配置使用

    docker 安装gitlab以及使用 一 安装及配置 1 gitlab镜像拉取 gitlab ce为稳定版本 xff0c 后面不填写版本则默认pull最新latest版本 docker pull gitlab gitlab ce 拉取镜像
  • 解决VMware上字特别小的问题

    在安装了vmware tools后 xff0c 屏幕虽然变大了 xff0c 但是字还是特别小 解决方法如下 xff1a 1 找到虚拟机上设置按钮 2 选择设备按钮 3 调整分辨率 xff08 我的电脑一开始默认的分辨率特别高 xff0c 我
  • 每天修Linux系统---关于libjpeg.so.8 && 简单的安装opencv的方法

    问题如图 xff1a 为了修这个东西我真的是费尽心力 xff0c 天天念叨 xff0c 就差卸载opencv重装 重装之前试了一下结果世界都亮了哥 xff01 xff01 xff01 解决方案如图 xff1a cv2没有报错了 xff01
  • Ubuntu22.04应用程序启动时闪退

    Ubuntu22 04启动应用程序时闪退 xff0c 添加程序启动时参数解决 今天尝试在ubuntu安装QQ音乐 xff0c 安装后启动时弹出一下就闪退了 命令行启动程序 xff0c 报错 xff1a FATAL gpu data mana
  • CNN 不变性

    CNN的平移不变性 xff1a 由于全局共享权值和pool操作 xff08 明显的特征被保存下来 xff0c 与位置没有关系 xff1f xff09 CNN的尺度不变性 xff1a 没有或者说具有一定的不变性 xff08 尺度变化不大 xf
  • Docker(四):网络管理

    Docker网络管理 一 xff1a Docker网络介绍1 1 none 网络1 2 host 网络1 3 Container1 4 Bridge 二 xff1a 端口映射 一 xff1a Docker网络介绍 Docker使用了Linu
  • k8S之Centos离线安装

    文章目录 前言一 主要策略二 建立自主可控的仓库1 软件仓库2 镜像仓库 三 k8s安装步骤1 基础环境准备2 安装docker3 安装K8S组件4 初始化k8s主节点5 检查集群状态6 安装flannel网络插件7 添加worker节点
  • vue3实际开发中遇到的问题:setup遇到异步请求逻辑时结合async使用方法

    setup执行在 VUE实例的beforeCreate 与created 之前 函数抛出的逻辑内容包括数据和方法都已完成 setup引入的JS逻辑 span class token keyword export span span clas
  • socket TCP编程模型实例1

    功能需求 xff1a 将本地文件夹下的source文件通过TCP备份到远程服务器 运行环境 xff1a unbuntu 客户端代码 xff1a 1 include lt stdio h gt 2 include lt fcntl h gt
  • 【Python】paramiko模块安装报错的解决办法

    背景 xff1a 需要使用paramiko模块 xff0c 结果安装的时候就报错了 xff0c 折腾了很久 xff0c 决定记录 安装parmiko的步骤 xff1a 1 安装pycrypto xff1a 但是报错 xff0c 报错内容如下
  • SpringBoot 修改项目包名,启动项目提示:Error: Could not find or load main class xxx.xxx.xxxApplication

    近期要写一个架构相同的项目 xff0c 所以为了省事就将原有项目直接改了项目名以及项目的包名直接又是一套系统 xff0c 心里简直美滋滋 当一切就绪的时候 xff0c 开始运行项目 xff0c 然后控制台却报了一个错 xff1a Error
  • JDK 8 如何通过 LocalDate 计算两个日期相差的天数

    JDK 8 如何通过 LocalDate 计算两个日期相差的天数 1 获取总的日期间隔2 获取年月日单独的日期间隔3 注意事项 JDK 8 提供了新的日期类 LocalDate xff0c 通过 LocalDate 可以轻松的对日期进行操作
  • Docker 进入容器,并在容器内执行命令

    目录 1 语法 xff1a 1 1 OPTIONS 参数说明 xff1a 1 2 COMMAND 参数 xff1a 2 查看正在运行的容器3 使用 exec 进入容器4 推荐的配置 1 语法 xff1a docker exec OPTION
  • 可用的公开 RTSP/ RTMP 在线视频流资源地址

    最后更新时间 xff1a 2021年12月13日 xff08 不定期更新 xff09 最近在做海康视频的流媒体转码 xff0c 特收集几个可以访问的在线流媒体资源测试使用 xff1a RTSP rtsp wowzaec2demo strea
  • Centos 7 防火墙 firewalld 相关基础命令

    目录 1 安装 firewalld 防火墙2 firewalld 基本命令3 firewall cmd 基本命令 注 在 Centos7 下默认的防火墙变成了 firewalld xff0c 而不再是之前的 iptables xff0c 如
  • 在 MyBatis 中使用 <、<= 等特殊符号

    目录 1 直接Java 处理 xff08 不推荐 xff09 2 特殊符号转义3 硬核方法 xff1a xff1c CDATA xff1e 在实际的开发中 xff0c 经常会遇到一些场景 xff0c 比如查询小于某个时间 xff0c 或者是
  • 快速设置 Docker 的三种网络代理配置

    目录 Docker Client 代理访问远程的 Docker DaemonDocker Daemon 代理拉取或推送国外镜像Container 容器内部代理访问国外资源 通过代理访问网络是一个比较头疼的事情 xff0c 例如 xff1a