Как пользователю внутри контейнера 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 на хостовой системе.