Docker的代理
国内相关的docker代理均被ban了,所以需要自己搭建代理,可以借助于serverless功能, 白嫖cloudflare这个互联网大善人。
推荐给本地的dockerd守护进程配置使用网络代理。
不建议使用cloudflare来代理Docker Hub。
cloudflare已经更新了条款,不再允许借助CDN来作为代理服务使用,有封号的风险。
cloudflare已经更新了条款,不再允许借助CDN来作为代理服务使用,有封号的风险。
cloudflare已经更新了条款,不再允许借助CDN来作为代理服务使用,有封号的风险。
dockerd配置代理
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf然后编辑文件/etc/systemd/system/docker.service.d/proxy.conf,写入以下内容(其中的代理地址请使用自己的网络代理配置),保存更改后重启Docker。
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890/"
Environment="HTTPS_PROXY=http://127.0.0.1:7890/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"Docker Hub 代理
参考 https://github.com/cmliu/CF-Workers-docker.io :
- 先注册一个cloudflare 账户,使用免费的订阅计划(Free plan)。
- 进入cloudflare dashboard -> 账户主页 -> 开发人员平台 -> 创建应用程序 -> pages 。
- 这个时候二选一:
- 如果fork了上面的github repo, 那就使用 连接到git ,一步一步按照流程, 部署fork的repo;
- 或者 复制 _work.js 的代码, 直接部署;
- 等待部署完成后, 会有一个cloudflare域(名),使用该域名(也可以设置pages的自定义域,使用自己个人的域名来指向这个代理)可以直接访问,显示的是docker hub的搜索框, 此时代理步骤完成。
docker pull 使用代理
最简单的方式是在pull的镜像名称前加上域名:docker pull 代理域名/镜像名称:镜像标签
还可以配置docker的repo mirror, 编辑/etc/docker/daemon.json文件:
{
"registry-mirrors": ["https://代理域名/"]
}然后重启docker , 执行docker info查看registries信息,是否为代理的域名。
docker build使用代理
在build命令中增加参数--build-arg http_proxy=http://代理地址 --build-arg https_proxy=http://代理地址
或者修改文件~/.docker/config.json, 此修改对docker run、docker build生效:
{
"proxies":
{
"default":
{
"httpProxy": "http://代理地址",
"httpsProxy": "http://代理地址",
"noProxy": "localhost,127.0.0.1"
}
}
}修改后,如果不想在容器中使用代理, 将容器中环境变量(http_proxy、https_proxy)设置为空即可。
需要注意的是代理地址需要根据容器使用的网络模式(host、bridge)来变动。