Я сейчас пытаюсь настроить Gitlab-runner с Docker -машинным исполнителем в AWS за прокси. Как-то docker -машина не может правильно подключиться к порожденным машинам. Вот что я получаю:
ubuntu@ip-42-1-0-44:~$ sudo -i docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
runner-eu3khqy-gitlab-docker-machine-1596546765-ee5149ca - amazonec2 Running tcp://42.1.0.36:2376 Unknown Unable to query docker version: Cannot connect to the docker engine endpoint
ubuntu@ip-42-1-0-44:~$ eval $(sudo -i docker-machine env runner-eu3khqy-gitlab-docker-machine-1596546765-ee5149ca)
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "42.1.0.36:2376": dial tcp 42.1.0.36:2376: connect: connection refused
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which might stop running containers.
Подробнее: Пока мне удалось запустить Gitlab-runner, который пытается порождать машины. И машина, на которой запущен бегун (Bastion), и машины, которые появляются, нуждаются в настройке прокси для подключения к inte rnet. Поэтому я настроил cntlm на Bastion. И gitlab-runner в /etc/systemd/system/gitlab-runner.service.d/http-proxy.conf для работы с этим прокси. Пока все хорошо.
Чтобы docker работал, я дополнительно настроил /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:3128/"
Environment="HTTPS_PROXY=http://127.0.0.1:3128/"
, где 3128 - это порт, который прослушивает cntlm.
Для создания машин я установил config.toml в MachineOptions
"engine-env=HTTP_PROXY=http://proxy.net:8080",
"engine-env=HTTPS_PROXY=http://proxy.net:8080",
"engine-env=NO_PROXY=localhost, 127.0.0.*, 10.*, 42.*, 192.168.*,
, который становится видимым в => /root/.docker/ машина / машины / бегун -? / config. json
"Env": [
"HTTP_PROXY=http://proxy.net:8080",
"HTTPS_PROXY=http://proxy.net:8080",
"NO_PROXY=localhost, 127.0.0.*, 10.*, 42.*, 192.168.*,
],
Отладка: Поэтому, когда я использовал docker -machine s sh для подключения к машине, я не мог найти, что docker запущен и не установлен. Здесь я предположил, что переменные прокси не будут должным образом переданы на машину.
Вопрос: Что я делаю не так? Как правильно передавать прокси-переменные на машины?
Обновление: Чтобы сузить круг вопросов, я вручную создал машину:
sudo -i docker-machine --debug create -d amazonec2 -amazonec2-region eu-central-1 -amazonec2-instance-type t2.micro -amazonec2-subnet-id subnet-XXXXX -amazonec2-vpc-id vpc-XXXXXX --amazonec2-use-private-address --engine-env http_proxy=http://proxy.net:8080 --engine-env https_proxy=http://proxy.net:8080 --engine-env no_proxy=localhost,127.0.0.*,10.*,42.*,192.168.* --engine-env HTTP_PROXY=http://proxy.net:8080 --engine-env HTTPS_PROXY=http://proxy.net:8080 --engine-env NO_PROXY=localhost,127.0.0.*,10.*,42.*,192.168.* docker-compose-test2
В полученных журналах i получить тайм-аут на sudo apt-get update
. После нескольких попыток и подключения к машине через s sh я почти уверен, что переменные среды, переданные через engine-env
, не установлены должным образом. То есть, несмотря на то, что я проверял конфигурацию через docker-machine inspect
, где вроде все нормально. Теперь мне интересно, может ли это быть проблемой, связанной с c драйвером amazonec2?