陆游气坏了,然后我们就没办法上网了
6 月中,docker hub 在国内被屏蔽了,各种镜像源也纷纷下线。哎,那就只好保护一下隐私吧就。
“拉镜像” 这个事儿是由 dockerd 来完成的。如果你在命令行里先设置代理,再 docker pull,是没用的。
那么如何让 dockerd 走代理呢?查了 docker 的文档,应该是有两个办法。一个办法是在 dockerd 启动脚本里面设置环境变量,另一个办法是在 dockerd 的设置里面设置代理。
方法一:启动脚本中配置代理
对于威联通来说,dockerd 的启动脚本为 /share/CACHEDEV1_DATA/.qpkg/container-station/script/run-docker.sh 。我们需要在几乎最后的位置,exec dockerd $DOCKER_OPTS 上面,加入设置代理的环境变量:
export https_proxy=http://192.168.12.34:7890
export http_proxy=http://192.168.12.34:7890
export no_proxy=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,*.local,*.lan
之后重启 container station 即可生效。
方法二:在配置文件里面配置代理
docker 文档里面说,这个方法适用于 dockerd 版本大于 23.0 。但是我看到 2024 年 7 月,威联通的 dockerd 版本为 20.10.27,其实并不支持这个方法。我不确定能成功。
编辑 /share/CACHEDEV1_DATA/.qpkg/container-station/etc/system-docker.json ,加入下面这些东西:
"proxies": {
"http-proxy": "http://192.168.12.34:7890",
"https-proxy": "http://192.168.12.34:7890",
"no-proxy": "127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,*.local,*.lan"
}
保存。然后同样是重启 container station 生效。
哦对了,其实还有其他办法:在 qnap 里直接设置代理。 I mean,搞个透明网关/旁路由网关。不过,我不会😂
最后,上述方法只对 dockerd 有效,每个容器内还是需要再单独设置代理的——所以,不如搞个旁路由网关得了。