Я хочу запустить экземпляр Jenkins в контейнере докеров.
Я хочу, чтобы сам Дженкинс мог разворачивать контейнеры докеров в качестве ведомых для запуска тестов.
Кажется, лучший способ сделать это - использовать
docker run -v /var/run.docker.sock:/var/run/docker.sock -p 8080:8080 -ti my-jenkins-image
Dockerfile
Я использую
FROM jenkins
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt
USER root
RUN apt-get update && apt-get install -y docker.io
RUN usermod -aG docker jenkins
USER jenkins
Если я запустил сеанс bash в моем запущенном контейнере и запустил docker info
на моем изображении, я получаю
$ docker info
FATA[0000] Get http:///var/run/docker.sock/v1.18/info: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
И если я запустил сеанс bash как root
docker exec -u 0 -ti cocky_mccarthy bash
[email protected]:/# docker info
Containers: 42
Images: 50
...
Итак, я думаю, что группа docker
, в которую я добавляю пользователя jenkins, является группой для внутреннего докера, поэтому сокет не читается без sudo. Такая проблема, как плагин docker jenkins и т.д., Не настроена для использования sudo.
Как смонтировать сокет, чтобы его можно было использовать из образа без sudo?