User Avatar
Email:
积分: 0
docker使用代理
本文最后更新于 241 天前,其中的信息可能已经有所发展或是发生改变。

docker程序的代理

配置 Docker 代理:一步步指南

在许多企业和组织中,网络流量需要通过代理服务器进行路由。这可能是出于安全、监控或性能优化的原因。如果你使用 Docker,并且需要配置它以通过代理服务器进行通信,那么这篇文章将详细介绍如何实现这一目标。

本文将指导你在基于 systemd 的 Linux 系统上,如何配置 Docker 使其使用 HTTP 和 HTTPS 代理。

步骤 1:创建或编辑配置文件

首先,我们需要确保 Docker 服务的配置目录存在,然后创建一个新的配置文件来添加代理设置。

  1. 创建目录(如果不存在):bash复制代码
sudo mkdir -p /etc/systemd/system/docker.service.d

2.创建或编辑代理配置文件:bash复制代码

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

3.在文件中添加以下内容以配置 HTTP 和 HTTPS 代理:ini复制代码将 your-proxy-server 替换为实际的代理服务器地址和端口。NO_PROXY 环境变量用于指定不需要通过代理的地址,比如本地主机和本地网络。

[Service] 
Environment="HTTP_PROXY=http://your-proxy-server:port" 
Environment="HTTPS_PROXY=http://your-proxy-server:port" Environment="NO_PROXY=localhost,127.0.0.1,your-local-network" 

步骤 2:重新加载 Systemd 配置

编辑完配置文件后,需要重新加载 systemd 配置以使更改生效:

bash复制代码
sudo systemctl daemon-reload

步骤 3:重新启动 Docker 服务

接下来,重新启动 Docker 服务以应用新的代理配置:

sudo systemctl restart docker

步骤 4:验证代理配置

要验证代理配置是否正确应用,可以检查 Docker 服务的环境变量:

docker info 

此命令将显示 Docker 服务的环境变量列表,其中应包括我们配置的 HTTP 和 HTTPS 代理设置。

示例docker info结果

修改docker配置文件以使用加速url

vi /etc/docker/daemon.json

填入以下内容

{
  "data-root": "/var/lib/docker",
  "experimental": true,
  "fixed-cidr-v6": "fc00:1010:1111:100::/64",
  "ip6tables": true,
  "ipv6": true,
  "live-restore": true,
  "log-driver": "json-file",
  "log-opts": {
    "max-file": "3",
    "max-size": "10m"
  },
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://cr.console.aliyun.com",
    "https://mirror.ccs.tencentyun.com"
  ]
}

在 Docker 容器内配置代理:详细指南

步骤 1:配置 Docker 容器的代理环境变量

要在 Docker 容器内配置代理,可以在启动容器时通过 -e 选项设置环境变量。具体步骤如下:

  1. 启动带有代理环境变量的 Docker 容器:bash复制代码 your-proxy-server 替换为实际的代理服务器地址和端口。NO_PROXY 环境变量用于指定不需要通过代理的地址,比如本地主机和本地网络。
docker run -it --name sdw --network host \
  -e http_proxy=http://172.17.0.1:7890 \    ###通常情况下在docker网桥下主机分配的ip是172.17.0.1
  -e https_proxy=http://172.17.0.1:7890 \
  --rm img_name

步骤 2:在 Dockerfile 中配置代理

你也可以在 Dockerfile 中直接配置代理环境变量,以确保构建过程中使用代理。方法如下:

  1. 编辑 Dockerfile: 在你的 Dockerfile 中添加以下行:Dockerfile复制代码
ENV HTTP_PROXY=http://your-proxy-server:port 
ENV HTTPS_PROXY=http://your-proxy-server:port 
ENV NO_PROXY=localhost,127.0.0.1,your-local-network

验证代理配置

  1. 进入容器: 启动容器后,你可以通过 docker exec 命令进入容器,验证代理配置是否生效:bash复制代码
  2. 检查环境变量: 在容器内,运行以下命令检查环境变量:bash复制代码echo $HTTP_PROXY echo $HTTPS_PROXY echo $NO_PROXY 你应该能够看到你设置的代理地址和端口。
docker exec -it <container_id> /bin/bash

echo $HTTP_PROXY 
echo $HTTPS_PROXY 
echo $NO_PROXY

常见问题与解决方案

  1. 代理设置不生效?
    • 确保环境变量名称拼写正确(HTTP_PROXY、HTTPS_PROXY、NO_PROXY)。
    • 确认代理服务器地址和端口正确。
    • 确保代理服务器可达,并没有网络连接问题。
  2. 某些地址不需要通过代理?
    • 使用 NO_PROXY 环境变量来指定不需要通过代理的地址和网络。

CX
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇