本文从不同角度介绍docker使用过程中的代理配置。

1. 系统代理配置方法

此方法适用于容器环境配置以及镜像打包。

  1. 新建proxy文本文件(名字可以更换):
1
touch proxy
  1. 编辑proxy,填入以下信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash

# 设置代理环境变量
export HTTP_PROXY="http://127.0.0.1:7890"
export http_proxy="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export SOCKS_PROXY="socks5://127.0.0.1:7891"
export socks_proxy="socks5://127.0.0.1:7891"
export NO_PROXY="localhost,127.0.0.1"
export no_proxy="localhost,127.0.0.1"

# 输出当前的代理设置
echo "当前代理设置如下:"
echo "HTTP_PROXY: $HTTP_PROXY"
echo "http_proxy: $http_proxy"
echo "HTTPS_PROXY: $HTTPS_PROXY"
echo "https_proxy: $https_proxy"
echo "SOCKS_PROXY: $SOCKS_PROXY"
echo "socks_proxy: $socks_proxy"
echo "NO_PROXY: $NO_PROXY"
echo "no_proxy: $no_proxy"
~
  1. ip默认本机,端口根据实际代理端口填写。编辑好之后每次在当前会话窗口运行以下命令即可临时生效:
1
source proxy

永久生效需要将上述命令填入环境变量中 例如.bashrc中。

2. 配置docker代理

此设置适用于镜像上传与拉取。

  1. 编辑/etc/docker/daemon.json文件

    如果需要自定义代理 (推荐)则填入:

1
2
3
4
5
6
7
{
"proxies": {
"http-proxy": "http://27.0.0.1:7890",
"https-proxy": "http://127.0.0.1:7890",
"no-proxy": "localhost,127.0.0.1"
}
}

  如果需要设置其他现成镜像源,例如飞牛OS的docker镜像源,则填入:

1
{"insecure-registries":["127.0.0.1:19827"], "live-restore":true, "registry-mirrors":["https://docker.ketches.cn"]}
  1. 编辑好后重启docker和daemon服务:
1
2
systemctl daemon-reload
systemctl restart docker

3. 容器代理配置

适用于运行期内容器的代理。

在对应docker-compose.yaml 文件下设置环境变量,例如

1
2
3
4
5
environment:
- HTTP_PROXY=http://host.docker.internal:7890
- HTTPS_PROXY=http://host.docker.internal:7890
extra_hosts:
- "host.docker.internal:host-gateway"