Мой конвейер также будет создавать больше контейнеров, и для этого я привязываю /var/run/docker.sock< /code>, чтобы совместно использовать сокет хоста Docker с Jenkins и создавать «родственные» контейнеры.
Вот изображение моего хоста Jenkins:
Код: Выделить всё
FROM jenkins/jenkins:lts
USER root
RUN apt-get update -qq \
&& apt-get install -qqy apt-transport-https ca-certificates curl gnupg2 software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
RUN apt-get update && apt-get -y install docker docker-ce-cli
RUN groupadd -g 1001 docker
RUN usermod -aG docker jenkins
USER jenkins
Однако когда я привязываю файл docker.sock к хост-контейнеру Jenkins, он меняет владельца файла на root:root (пользователь root, корневая группа), что делает Jenkins неспособным получить к нему доступ, поэтому я получите сообщение об отказе в доступе:
Код: Выделить всё
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json: dial unix /var/run/docker.sock: connect: permission denied
Код: Выделить всё
chgrp docker /var/run/docker.sock

Я не знаю, является ли это ошибкой Docker или if Я делаю что-то не так.
Меня больше всего беспокоит безопасность в этом проекте. Я не хочу запускать контейнеры с root-доступом, потому что я понимаю, что это угроза безопасности, и я тоже. хочу вручную изменять разрешения docker.sock каждый раз при загрузке компьютера.
Я настоятельно подумываю о переходе на подход Sysbox, хотя до сих пор мало что о нем знаю и какие проблемы у меня могут возникнуть.
- Я использую Windows и использую Docker Desktop v4.29.0
Моя версия движка 26.0.0 (WSL2)
Пытался запустить команду docker ps внутри моего контейнера Jenkins. Вместо этого она должна вернуть все запущенные в данный момент контейнеры.< /п>
Подробнее здесь: https://stackoverflow.com/questions/784 ... o-rootroot