代理配置
在使用 Docker 时,如果你的网络环境需要通过代理服务器访问外网(比如公司内网或校园网),你需要对 Docker 进行代理配置,否则 Docker 在拉取镜像、运行容器等操作时可能会因无法访问外网而失败。以下是 Docker 配置代理的详细步骤:
一、Container 的Proxy(适用于 docker 命令行工具)
注意,Docker客户端配置是对创建的容器生效,也就是把代理环境变量配置注入到容器内部。对于物理主机上的docker服务要实现镜像下载加速,需要配置 Docker服务器Proxy
在容器运行阶段,如果需要代理上网,则需要配置 ~/.docker/config.json。以下配置,只在Docker 17.07及以上版本生效。
[root@docker ~]# cat .docker/config.json
{
"auths": {
"192.168.100.28:8088": {
"auth": "YWRtaW46SGFyYm9yMTIzNDU="
},
"registry.cn-shenzhen.aliyuncs.com": {
"auth": "ZGFzc3o6ZGFzQDEyMzQ1Ng=="
}
},
"proxies": {
"default": {
"httpProxy": "http://172.168.80.36:7897",
"httpsProxy": "http://172.168.80.36:7897",
"noProxy": "localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.mirayai.com,.dockerproxy.com,.aliyun.com,easzlab.io.local"
}
}
}二、Docker服务器Proxy
对于主机上的dockerd服务,在下载镜像等工作使用代理,则需要配置服务的环境变量。
创建 /etc/systemd/system/docker.service.d/http-proxy.conf 配置文件
[root@docker ~]# cat /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://172.168.80.36:7897"
Environment="HTTPS_PROXY=http://172.168.80.36:7897"
Environment="NO_PROXY=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.mirayai.com,.dockerproxy.com,.aliyun.com,easzlab.io.local"然后重新加载配置并重启服务:
systemctl daemon-reload
systemctl restart docker然后检查加载的配置:
systemctl show docker --property Environment可以看到输出:
[root@docker ~]# systemctl show docker --property Environment
Environment=HTTP_PROXY=http://172.168.80.36:7897 HTTPS_PROXY=http://172.168.80.36:7897 NO_PROXY=*.chn-das.com,*.dasaiot.com,127.0.0.1,10.*,172.*,192.*,dockerproxy.*,*.aliyun.com配置文件介绍
# cat /etc/docker/daemon.json
{
"data-root": "/opt/docker-data/docker",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"insecure-registries": ["192.168.100.28:8088","docker-registry.openfaas-fn","docker-registry.openfaas-fn:5000","easzlab.io.local:5000"],
"registry-mirrors": ["http://192.168.100.28:8088"],
"default-address-pools": [{"base": "10.233.0.1/18","size": 24}]
}data-root:
作用:指定 Docker 存储容器数据和镜像的根目录。默认情况下,Docker 会将数据存储在
/var/lib/docker目录下。通过设置data-root,你可以将 Docker 数据存储在其他位置,例如/opt/docker-data/docker。
log-opts:
作用:配置 Docker 容器的日志选项。
max-size: 指定单个日志文件的最大大小,这里设置为10m(10 兆字节)。max-file: 指定保留的日志文件的最大数量,这里设置为3。当日志文件超过最大大小时,Docker 会轮换日志文件并删除最旧的文件。
insecure-registries:
作用:指定不安全的 Docker 镜像仓库地址。默认情况下,Docker 只允许使用 HTTPS 的注册表。如果你有一个使用 HTTP 的本地注册表,可以将其添加到这个列表中。在这个示例中,包含了两个不安全的注册表地址:
192.168.100.28:8088和docker-registry.openfaas-fn(包括其端口5000)。
registry-mirrors:
作用:配置 Docker 镜像的镜像加速器。Docker 默认从 Docker Hub 下载镜像,如果网络较慢,可以使用镜像加速器来提高下载速度。在这个示例中,指定了一个镜像加速器
http://192.168.100.28:8088。
default-address-pools:
作用:配置 Docker 网络的默认地址池。这个配置项允许你定义 Docker 网络在创建时使用的 IP 地址范围。
base:"10.233.0.1/18"是这个地址池的起始地址。18表示这个地址池的网络部分有 18 位,剩余的 14 位用于主机地址。10.233.0.0/18的网络范围是从10.233.0.0到10.233.63.255。这个范围总共有 16384 个 IP 地址(2^14),其中包括网络地址10.233.0.0和广播地址10.233.63.255,所以可用的主机地址是从10.233.0.1到10.233.63.254。size设置为24表示在10.233.0.0/18的基础上,Docker 会从这个地址池中划分出多个子网,每个子网的大小为24。从10.233.0.0/24到10.233.63.0/24