docker和containerd增加代理
在某些场景中,往往需要离线或使用代理 (Proxy), 例如:
-
需要通过 Proxy pull 容器镜像:
-
Docker Hub:
docker.io -
Quay:
quay.io -
GCR:
gcr.io -
GitHub 镜像库:
ghcr.io
-
-
在某些企业环境中,需要通过代理访问外部服务
docker 配置代理
# 创建docker.service.d目录 $ mkdir -p /etc/systemd/system/docker.service.d # 创建HTTP&HTTPS代理文件 $ cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<-EOF [Service] Environment="HTTP_PROXY=http://proxy-addr:proxy-port" #代理服务器地址 Environment="HTTPS_PROXY=http://proxy-addr:proxy-port" #https Environment="NO_PROXY=<noproxy_address>" #哪些地址不需要走代理 EOF # 重启dockerd $ systemctl daemon-reload $ systemctl restart docker
containerd 配置代理
containerd 的配置一般位于 /etc/containerd/config.toml 下,service 文件位于:/etc/systemd/system/containerd.service 配置 Proxy 可以通过 service 环境变量方式配置,具体如下:
创建或编辑文件:/etc/systemd/system/containerd.service.d/http-proxy.conf
# 创建 containerd.service.d 目录 $ mkdir /etc/systemd/system/containerd.service.d/ # 创建或编辑文件 $ cat > /etc/systemd/system/containerd.service.d/http-proxy.conf <<-EOF [Service] Environment="HTTP_PROXY=http://127.0.0.1:7890" Environment="HTTPS_PROXY=http://127.0.0.1:7890" Environment="NO_PROXY=noproxy_address>" EOF # 重启containerd $ systemctl daemon-reload $ systemctl restart containerd
NO_PROXY 的推荐配置
在配置 Proxy 时要特别注意,哪些要走 Proxy, 哪些不走 Proxy 要非常明确,避免出现网络访问异常甚至业务异常。
这里有个推荐 NO_PROXY 配置:
-
本地地址和网段:
localhost和127.0.0.1或127.0.0.0/8 -
Kubernetes 的默认域名后缀:
.svc和.cluster.local -
Kubernetes Node 的网段甚至所有应该不用 proxy 访问的 node 网段:
<nodeCIDR> -
APIServer 的内部 URL:
<APIServerInternalURL> -
Service Network:
<serviceNetworkCIDRs> -
(如有)etcd 的 Discovery Domain:
<etcdDiscoveryDomain> -
Cluster Network:
<clusterNetworkCIDRs> -
其他特定平台相关网段(如 DevOps, Git/制品仓库。..):
<platformSpecific> -
其他特定
NO_PROXY网段:<REST_OF_CUSTOM_EXCEPTIONS> -
常用内网网段:
-
10.0.0.0/8 -
172.16.0.0/12 -
192.168.0.0/16
-
浙公网安备 33010602011771号