Как пользователю внутри контейнера Docker дать права доступа к docker на хостовой системе

jenkins: image: jenkins/jenkins:lts-jdk11 user: '1000' volumes: - ${PWD}/wolumes/jenkins:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock environment: - VIRTUAL_HOST= ******* - LETSENCRYPT_HOST= ******* - VIRTUAL_PORT=8080
ports: - "8080:8080" - "50000:50000" restart: unless-stopped

Jenkins запускается внутри контейнера со следующими параметрами(выше код).Мне нужно jenkins дать доступ к docker на хосте.


Ответы (1 шт):

Автор решения: Саня

Откопал решение в недрах интернета

Большое значение, которое приносит контейнеризация, состоит в том, что все эти независимые контейнеры (фактически процессы) могут совместно использовать ядро. Это означает, что даже если на хосте докера запущены сотни или тысячи контейнеров, ноКонтролируемые ядром uid и gid по-прежнему только один набор, Таким образом, один и тот же uid представляет одного и того же пользователя в хосте и контейнере (даже если разные имена пользователей отображаются в разных местах).

Фактически ядром системы управляет только один uid 1000. На хост-машине он рассматривается как ник пользователя, а в контейнере - как пользователь-пользователь.

Таким образом, есть одна вещь, которую мы должны прояснить: внутри контейнера пользователь appuser может получить права и привилегии ника пользователя вне контейнера. Привилегия, предоставленная пользователю nick или uid 1000 на хост-машине, также будет предоставлена appuser в контейнере.

Тоесть проще говоря,смотрем uid в контейнре(допустим 1000),создаем в системе пользователя с uid 1000 и этому пользователю даем права доступа к docker.sock При прописанном -v /var/run/docker.sock:/var/run/docker.sock это дает нам доступ контейнера к docker на хостовой системе.

→ Ссылка