我在尝试使用 Gitlab 和 docker 设置 CI 时遇到了一些问题:docker-compose 构建失败并出现错误
Building web
Step 1/8 : FROM python:2.7-alpine
Service 'web' failed to build: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout
ERROR: Job failed: exit code 1
这是我的 gitlab-runner/config.toml:
concurrent = 1
check_interval = 0
[[runners]]
name = "Backend-django runner"
url = "http://gitlab.codewithme.today/ci"
token = "4976e4153178a33029e041a0f5fe07"
executor = "docker"
[runners.docker]
tls_verify = false
image = "python:2.7-alpine"
privileged = true
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache]
我自己的 gitlab 容器注册表可以与 letencrypt 创建的证书配合使用,并且相同的过程可以在同一台服务器上使用 gitlab runner 成功本地完成。
如何克服这个问题?
更改网络接口上的参数
mtu=1300
解决了问题。
https://docs.gitlab.com/ee/user/clusters/agent/work_with_agent.html
覆盖已创建网络的MTU 对于某些环境,例如 OpenStack 中的虚拟机,自定义 MTU 是必要的。 Docker 守护进程不尊重 docker.json 中的 MTU(请参阅 moby 问题),因此您可以将 config.toml 中的 network_mtu 设置为任何有效值。这指示 Docker 守护进程为新创建的网络使用正确的 MTU。
[runners.docker]
network_mtu = 1402