Docker 配置 HTTP 和 HTTPS 网络代理

news/2024/11/26 9:07:40/
http://www.w3.org/2000/svg" style="display: none;">

前言

在内网环境中,为了实现全局代理上网,Linux 系统通常通过修改 .bashrc/etc/profile 等文件,设置 HTTP 和 HTTPS 代理。这种方式可以为大多数应用提供代理支持,但 Docker 并不会自动读取系统的环境变量,因此需要单独为其配置代理。

以下是为 Docker 添加 HTTP 和 HTTPS 代理的详细步骤:


1. 创建代理配置文件目录

首先,需要为 Docker 服务创建一个配置目录。执行以下命令:

mkdir -p /etc/systemd/system/docker.service.d

2. 新增代理配置文件

在目录 /etc/systemd/system/docker.service.d 下创建一个新的配置文件 proxy.conf

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

添加以下内容:

[Service]
Environment="HTTP_PROXY=http://192.168.1.100:3128/"
Environment="HTTPS_PROXY=http://192.168.1.100:3128/"
Environment="NO_PROXY=localhost,127.0.0.1,192.168.1.0/24,.example.com"
  • HTTP_PROXY:设置 HTTP 代理的地址,格式为 http://proxy_address:port,例如 http://192.168.1.100:3128/
  • HTTPS_PROXY:设置 HTTPS 代理的地址,格式与 HTTP 代理相同。
  • NO_PROXY:指定不使用代理的地址,多个地址用逗号分隔,例如 localhost,127.0.0.1,也可以加入内网镜像源的地址,支持 CIDR 格式和域名通配符,如 .example.com

示例:假设你有一个 Squid 代理服务器运行在内网 IP 192.168.1.100 的 3128 端口,并希望通过代理访问外网,同时直连内网地址 192.168.1.0/24 和子域名 .example.com,上述配置即为理想设置。


3. 重新加载配置

设置完成后,需要重新加载 systemd 的配置并重启 Docker 服务:

# 重新加载 systemd 配置
systemctl daemon-reload# 重启 Docker 服务
systemctl restart docker

4. 验证代理是否生效

执行以下命令,检查 Docker 是否正确读取了代理配置:

docker info | grep -i proxy

如果代理配置正确,你会看到类似以下的输出:

 HTTP Proxy: http://192.168.1.100:3128/HTTPS Proxy: http://192.168.1.100:3128/No Proxy: localhost,127.0.0.1,192.168.1.0/24,.example.com

5. 测试镜像拉取

拉取一个镜像,验证代理是否生效:

docker pull alpine

如果镜像能够正常拉取,说明代理配置已成功生效。


常见问题与解决方法

1. 配置不生效

  • 确保代理地址和端口正确。
  • 检查 proxy.conf 的语法是否正确,尤其是引号的使用。
  • 确保 Docker 服务已经被正确重启。

2. 某些地址不需要代理

  • NO_PROXY 中添加内网地址或特殊的域名。
  • 确保 NO_PROXY 字段中的地址格式正确,例如 .example.com 匹配所有子域名。

通过以上步骤,你可以在内网环境下为 Docker 配置代理,从而解决拉取镜像时无法连接外网的问题。代理配置后,Docker 将能够顺畅地访问外网,同时也可以通过 NO_PROXY 字段保留对内网地址的直连。


http://www.ppmy.cn/news/1550019.html

相关文章

谷粒商城-消息队列Rabbitmq

RabbitMq参考文档 在谷粒商城项目中使用消息队列主要有以下几个重要原因: 异步处理提高性能 场景示例:在订单系统中,当用户提交订单后,系统需要完成多个操作,如更新库存、生成订单记录、发送订单通知等。如果这些操作…

动态规划 详解

动态规划(Dynamic Programming, DP)详解 动态规划是一种通过分解问题为子问题并利用子问题的解来解决原问题的算法设计方法。它通常用于解决具有 重叠子问题 和 最优子结构 性质的问题。 1. 动态规划的核心思想 1.1 重叠子问题 问题可以分解为多个子问…

【C语言】野指针问题详解及防范方法

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯什么是野指针?💯未初始化的指针代码示例问题分析解决方法 💯指针越界访问代码示例问题分析解决方法 💯指向已释放内存的…

navicat密码解密python

其他资料都是用php写的,但是运行起来好像有点问题,提供python代码,首先注册表获取加密后的密码,然后运行下述代码解密。 参考:获取navicat密码 import hashlib from Crypto.Cipher import AES, Blowfish from Crypto.…

内存不足引发C++程序闪退崩溃问题的分析与总结

目录 1、内存不足一般出现在32位程序中 2、内存不足时会导致malloc或new申请内存失败 2.1、malloc申请内存失败,返回NULL 2.2、new申请内存失败,抛出异常 3、内存不足项目实战案例中相关细节与要点说明 3.1、内存不足导致malloc申请内存失败&#…

【Pytest+Yaml+Allure】实现接口自动化测试框架

一、框架思想 requestsyamlpytestallure实现接口自动化框架。结合数据驱动和分层思想,将代码与数据分离,易维护,易上手。使用yaml编写编写测试用例,利用requests库发送请求,使用pytest管理用例,allure生成…

Linux常用指令(1)

目录 何为指令 基本常用指令 1.clear 2.exit 3.whoami 4.pwd 5.which 6.alias 7.tree ls指令 pwd指令 cd指令 touch指令 mkdir指令 rmdir指令 && rm指令 rmdir指令 rm指令 man指令 cp指令 何为指令 指令的本质其实就是可执行程序。 指令 可执行文件…

第十章 作业

在网页中显示一个工作中的“数字时钟” <!DOCTYPE html> <html><head><meta charset"utf-8"><title>动态时钟</title><style>.all{width: 600px;height: 300px;margin: 100px auto;text-align: center;font-size: 50px;}…