Передача прокси-переменных на машину с использованием docker -машины - PullRequest
0 голосов
/ 04 августа 2020

Я сейчас пытаюсь настроить 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?

...