Featured image of post docker和containerd增加代理

docker和containerd增加代理

docker和containerd增加代理

在某些场景中,往往需要离线或使用代理 (Proxy), 例如:

  • 需要通过 Proxy pull 容器镜像:

    • Docker Hub: docker.io

    • Quay: quay.io

    • GCR: gcr.io

    • GitHub 镜像库:ghcr.io

  • 在某些企业环境中,需要通过代理访问外部服务

docker 配置代理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建 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