CI 脚本刚开始会拉取运行脚本所需的 docker 镜像,但是连接的是官方的 registry.docker.io 等类型的远程仓库,连接不上。一般会说报错到哪哪的连接拨号超时。
如果 gitlab runner 是采用 docker 挂载宿主机的 docker sock 的话,那么就说明不是采用 docker in docker 的方式使用 runner。这个时候如果宿主机中的配置文件使用不到,那么 runner 容器中的 docker 也是用不到宿主机中的网络配置的。
采用的办法是先进入容器创建相应的文件夹,假设容器名为 gitlab-runner:
进入容器
docker exec -it gitlab-runner bash
然后在容器中创建 docker 网络配置 文件夹
# mkdir /etc/systemd/system/docker.service.d/
最后将宿主机中的 docker 网络配置 文件拷贝进 gitlab-runner 容器中的对应位置。
sudo docker cp /etc/systemd/system/docker.service.d/http-proxy.conf gitlab-runner:/etc/systemd/system/docker.service.d/http-proxy.conf
重新试一下 Retry pipeline 对应的 job, 看看是否有必要重启 gitlab-runner 容器。
我这里只需要拷贝进 docker.service.d/http-proxy.conf 配置文件就可以了,而无需重启。