前言
最近国内各大 Docker Hub
镜像源陆陆续续的停止服务或源更新慢等情况,导致镜像的拉取体验非常非常的糟糕,只在 /etc/docker/daemon.json
内设置 registry-mirrors
选项目前解决不了我的问题,所以经过一番折腾,直接挂代理使用才让我用的舒心😌
以下方式都是针对 Docker Engine 的配置,Docker Desktop 在对应的可视化界面配置即可
设置守护进程使用代理 1
编辑配置
配置 daemon.json 的方式
该方式需要 Docker Engine 版本为 23.0 或更高
在 /etc/docker/daemon.json
文件内加入以下配置:
|
|
没有该文件的直接新建,将其中的示例地址换成自己的代理服务器地址就可以了,其中 no-proxy
配置项中填写不想使用代理服务器的地址,比如公司内网地址或自建的registry地址等等
配置 systemd service 的方式
在 /etc/systemd/system/docker.service.d/http-proxy.conf
文件内加入以下配置,没有该文件(夹)的直接新建即可:
|
|
其中的变量含义同 daemon.json
内的一样
应用配置
按照上方方式之一配置好后,需要重启Docker进程使之生效,命令如下:
|
|
使用 docker info
命令,在输出的文本内有类似输出即为成功:
|
|
启用地址为你配置的地址,选项数量即为你配置的那几个,然后使用 docker pull
就会走代理啦!
设置容器使用代理 2
容器代理顾名思义就是给运行的容器内设置代理,容器内的请求就可以走代理了
配置方式
在Docker client配置文件 ~/.docker/config.json
内加入如下内容:
|
|
没有该文件的手动新建即可,保存配置后无需重启Docker,注意的是配置后只对新建的容器、构建生效,已存在容器不受影响。
可用的配置参数及说明:
参数名 | 描述 |
---|---|
httpProxy | Sets the HTTP_PROXY and http_proxy environment variables and build arguments. |
httpsProxy | Sets the HTTPS_PROXY and https_proxy environment variables and build arguments. |
ftpProxy | Sets the FTP_PROXY and ftp_proxy environment variables and build arguments. |
noProxy | Sets the NO_PROXY and no_proxy environment variables and build arguments. |
allProxy | Sets the ALL_PROXY and all_proxy environment variables and build arguments. |
再就是使用运行容器时传入 --env
或 -e
对应的环境变量参数方式,这里不细说了,比较常见。
注:以上所有配置中设置的代理服务器地址也支持
SOCKS
代理协议,设置格式为socks5://host:port
以上就是通过网络搜索结果结合官方文档得出的配置方式,更多详情参阅官方文档,希望该教程能帮助到有同样问题的小伙伴~