我正在尝试ta
\n我试图在 docker 配置中为我的 gitlab 实例运行一个 docker,但我只能 \xe2\x80\x99t 让它工作。
\n这是我想做的:
\n所有这些都在 Ubuntu 18.04 下运行。这是命令
\n创建网络
\nsudo docker 网络创建 gitlab-runner-net
\n在docker中启动docker:
\nsudo docker run --privileged --name gitlab-dind -d \\\n --network gitlab-runner-net --network-alias gitlab-runner-net \\\n -e DOCKER_TLS_CERTDIR=/certs \\\n -v docker-certs-ca:/certs/ca \\\n -v docker-certs-client:/certs/client \\\n -v /var/lib/docker \\\n docker:19.03.13-dind --storage-driver=overlay2 \nRun Code Online (Sandbox Code Playgroud)\n对于跑步者来说
\n sudo docker run -d --name gitlab-runner --restart always --network gitlab-runner-net -v /srv/gitlab-runner/config.toml:/etc/gitlab-runner/config.toml -e DOCKER_TLS_CERTDIR=/certs -v docker-certs-client:/certs/client:ro -e DOCKER_HOST=tcp://gitlab-dind:2376 gitlab/gitlab-runner:alpine\nRun Code Online (Sandbox Code Playgroud)\n这是 config.toml
\nconcurrent = 1\ncheck_interval = 0\n\n[session_server]\n session_timeout = 1800\n\n[[runners]]\n name = "gitlab-did"\n url = \xe2\x80\x9ecleaned\xe2\x80\x9c\n token = \xe2\x80\x9ecleaned\n executor = "docker"\n [runners.custom_build_dir]\n [runners.cache]\n [runners.cache.s3]\n [runners.cache.gcs]\n [runners.cache.azure]\n [runners.docker]\n host = "tcp://gitlab-dind:2376"\n tls_verify = false\n image = "docker:19.03.13"\n privileged = true\n disable_entrypoint_overwrite = false\n oom_kill_disable = false\n disable_cache = false\n volumes = ["/cache", "/certs"]\n shm_size = 0\nRun Code Online (Sandbox Code Playgroud)\n容器旋转良好,并且 gitlab 运行程序注册。但后来我使用以下 .gitlab-ci.yml
\n\n\n图片:docker:19.03.12 服务:
\n\n
\n- 码头工人:19.03.12-dind
\n之前的脚本:
\n\n
\n- 码头工人信息
\n构建:阶段:构建脚本:\n- docker build -t my-docker-image 。\n- docker run my-docker-image /script/to/run/tests
\n
结果是
\n> Running with gitlab-runner 13.4.1 (e95f89a0) on gitlab-did FPGoD8Ms\n> Preparing the "docker" executor 00:09 ERROR: Failed to remove network\n> for build ERROR: Preparation failed: Error response from daemon:\n> Client sent an HTTP request to an HTTPS server. (docker.go:985:0s)\n> Will be retried in 3s ... ERROR: Failed to remove network for build\n> ERROR: Preparation failed: Error response from daemon: Client sent an\n> HTTP request to an HTTPS server. (docker.go:985:0s) Will be retried in\n> 3s ... ERROR: Failed to remove network for build ERROR: Preparation\n> failed: Error response from daemon: Client sent an HTTP request to an\n> HTTPS server. (docker.go:985:0s) Will be retried in 3s ... ERROR: Job\n> failed (system failure): Error response from daemon: Client sent an\n> HTTP request to an HTTPS server. (docker.go:985:0s)\nRun Code Online (Sandbox Code Playgroud)\n我已经尝试解决这个问题好几天了。我尝试了太多的设置,以至于我失去了概览。
\n请问有人有建议吗?
\n小智 1
我有一个类似的用例(Jenkins CI),并遇到了同样的问题。我能够通过根本不在 docker 中使用 docker 来解决这个问题。相反,我将 /var/run/docker.sock 安装到 docker 容器中(即-v /var/run/docker.sock:/var/run/docker.sock)。docker 守护进程的 URL 变为unix:///var/run/docker.sock。
这个建议来自https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/,直接从dockerhub上docker镜像中的官方docker引用。
我在容器上唯一需要更改的是确保我的用户是 docker 组的一部分,并且 docker 组在主机和容器上具有相同的 gid。
| 归档时间: |
|
| 查看次数: |
21276 次 |
| 最近记录: |