Providing proxy settings to dockerd strated with dind service
Is there a way to pass proxy settings to the dockerd that gets started when gitlab runner executes a job that has dind specified as a service?
The proxy I need to pass needs no authentication so I followed these instructions except CNTLM:
https://docs.gitlab.com/runner/configuration/proxy.html#adding-the-proxy-to-the-docker-containers
https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-in-docker-executor
and got nearly all to work by using docker-socket-binding
https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-socket-binding
except for passing a volume containing test files to docker with -v GL-CI log, which seems only possible with dind.
Currently I am facing the problem that I cannot successfully run a job for a .gitlab-ci.yml
that uses dind as a service (to have docker -v
). Even though the container of the docker executor of the runner seems to get the proxy settings (git clone works), docker login/pull/push
seem not to get out GL-CI log.
As far as I understand the settings for docker from
https://docs.gitlab.com/runner/configuration/proxy.html#configuring-docker-for-downloading-images
only have effect on the host dockerd
but not on the dockerd
run inside dind. Since dockerd
seems to take the proxy settings from the environment variables (HTTP_PROXY and HTTPS_PROXY) I wonder if it would be sufficient to pass those values set in the config.toml
on to the docker command of the gitlab runner that starts the dind service (e.g. with --env
).
Is that already possible or would that need some changes in gitlab runner?
Are the --env
settings of the gitlab runner also used when starting the dind service, i.e. passed on to the environment in which dockerd
is started?