Я создал экземпляр ACS и зарегистрировал его как агент VSTS. Я использовал изображение lenisha/vsts-agent-infrastructure
для использования terraform. В любом случае, я хочу создать образы докеров, но при использовании агентов из ACS я получаю сообщение об ошибке: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
. Итак, вопрос в том, есть ли способ добраться до демона докеров? Мне не удалось найти информацию о том, как смонтировать docker.sock в ACS (-v /var/run/docker.sock:/var/run/docker.sock
).
Контейнер службы контейнеров Azure в качестве агента VSTS для создания образов докеров
Ответы (1)
Просто обратитесь к этому блогу: Использование Docker агента Visual Studio Team Services Изображения
Агент, поддерживающий использование контейнеров для сборки исходного кода Наконец, мы подошли к той части, которая вас больше всего интересует. Как на самом деле настроить один из этих агентов и избежать описанных выше ошибок?
Существует переменная среды с именем
VSTS_WORK
, которая указывает, где агент должен выполнять работу. Мы можем изменить расположение каталога и смонтировать его так, чтобы при запуске контейнера Docker на хосте он имел доступ к файлам.Чтобы создать агент, способный использовать докер таким образом:
docker run -e VSTS_ACCOUNT=<youraccountname> \ -e VSTS_TOKEN=<your-account-Private-access-token> \ -e VSTS_WORK=/var/vsts -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/vsts:/var/vsts -d \ microsoft/vsts-agent:ubuntu-16.04-docker-17.03.0-ce-standard
Здесь важна команда
-e VSTS_WORK=/var/vsts
, которая указывает агенту выполнять всю работу в папке/var/vsts
. Затем объемное монтирование папки с -v/var/vsts:/var/vsts
позволяет вам запускать контейнеры Docker внутри агента VSTS и при этом видеть все файлы.
ОБНОВЛЕНИЕ:
Основываясь на моем исследовании, кажется, не удается найти способ монтирования /var/run/docker.sock
с хост-машины внутри контейнера ACS, например, проблема, упомянутая в этой теме: Монтирующий том в Azure-Container-Service не работает для traefik.toml и /var/run/docker.sock