你给 docker.service 加了代理,重启了它,可下一次 pull 的表现却和之前一模一样。在同时安装了 apt 和 snap 版本的机器上,先确认你的 CLI 用的到底是不是这个守护进程。

这里有三层彼此独立的身份需要对应:CLI 可执行文件、所选的端点,以及该端点背后的服务端进程。在 PATH 里找到一个 docker 命令只能确定第一层。

docker context show
docker context inspect

Docker 的 context 描述的是端点。DOCKER_HOST、DOCKER_CONTEXT 以及命令行上的端点选择都可能覆盖表面上的默认值,所以环境变量和调用方式也要一并检查。

然后把选定的 socket 或远程地址对应到真正的守护进程及其服务配置上。两套安装可以有各自的 unit、配置路径和存储。远程 context 则可能完全指向本机之外。

请通过属于那个守护进程的接口来应用代理。Docker 文档中的守护进程设置及其启动环境并不是向主机上每一套 Docker 安装广播的。

在为了“清理环境”而卸载某个软件包之前,先把这层身份确认清楚。一个看似没人用的守护进程,可能持有另一套实例并不管理的容器或镜像。眼下要修代理,只需有意识地去配置所选的那个服务端;至于保留哪一套安装,那是另一件维护层面的事。

相关文章