gpt4 book ai didi

docker - 如何在gitlab CI中的docker-in-docker(dind)中设置代理

转载 作者:行者123 更新时间:2023-12-02 18:53:11 25 4
gpt4 key购买 nike

我正在尝试使用gitlab CI设置作业以从dockerfile构建docker镜像,但是我在代理后面。

我的.gitlab-ci.yml如下:

image: docker:stable

variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
HTTP_PROXY: $http_proxy
HTTPS_PROXY: $http_proxy
http_proxy: $http_proxy
https_proxy: $http_proxy

services:
- docker:dind

before_script:
- wget -O - www.google.com # just to test
- docker search node # just to test
- docker info # just to test

build:
stage: build
script:
- docker build -t my-docker-image .
wget有效,理论上意味着代理设置正确

但是命令 docker searchdocker infodocker build不起作用,显然是由于代理问题。

作业输出摘录:
$ docker search node
Warning: failed to get default registry endpoint from daemon (Error response from daemon:
[and here comes a huge raw HTML output including the following message: "504 - server did not respond to proxy"]

看来docker没有从环境变量中读取设置代理。

注意:我确实在--privileged模式下使用Runner,即 as the documentation instructs to do

我该如何解决?

最佳答案

奇怪的是,解决方案是改用gitlab提供的特殊dind(docker-in-docker)图像,它无需设置服务和任何东西即可工作。起作用的.gitlab-ci.yml如下:

image: gitlab/dind:latest

before_script:
- wget -O - www.google.com
- docker search node
- docker info

build:
stage: build
script:
- docker build -t my-docker-image .

不要忘记 gitlab-runner must be registered with the --privileged flag

关于docker - 如何在gitlab CI中的docker-in-docker(dind)中设置代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51755305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com