LINUX.ORG.RU
ФорумAdmin

докер добавить юзера

 


1

1

есть такой yml файл

version: '2'
services:

  php:
    image: yiisoftware/yii2-php:7.3-apache
    volumes:
      - ~/.composer-docker/cache:/root/.composer/cache:delegated
      - ./:/app:delegated
    ports:
      - '80:80'
    links:
      - mysql
    environment:
      VIRTUAL_HOST: d.local
    user: "1000:1000"

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: t
      MYSQL_DATABASE: d
      MYSQL_USER: d
      MYSQL_PASSWORD: d
    volumes:
      - ../:/docker-entrypoint-initdb.d
      - mysql_data:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - '8000:80'
    links:
      - mysql
    environment:
      PMA_HOST: mysql

volumes:
  mysql_data:



я хочу чтобы все новые файлы внутри контейнера создавались не под рутом
добавил такую строку user: «1000:1000»
на хосте есть такой юзер ид и группа ид
при запуске команды docker-compose run получаю ошибку
standard_init_linux.go:211: exec user process caused «permission denied»
есть простое решение через docker-compose чтобы добавить хост юзера?

так наверное нужно посмотреть /etc/passwd в контейнере есть там пользователь с uid нужным?

есть простое решение через docker-compose чтобы добавить хост юзера?

Есть

st4l1k ★★
()
Последнее исправление: st4l1k (всего исправлений: 1)

Проверь, что этот юзер имеет права, для начала.

sudo usermod -aG docker username

anonymous
()
Ответ на: комментарий от r_asian

мне нужно наоборот- чтобы в контейнере создался юзер из хоста, и вся работа в контейнере была как будто от имени хост юзера

kommersant ★★
() автор топика
Ответ на: комментарий от st4l1k

конечно в контейнере нет такого юзера
вопрос был в том как автоматически создать текущего юзера и чтобы в контейнере работать от этого юзера

kommersant ★★
() автор топика
Ответ на: комментарий от kommersant

Напиши свой скрипт запуска контейнера где вызовешь useradd с нужными параметрами и дальше запустишь сервис от этого пользователя. В чём проблема?

manntes-live ★★★
()

version: ‘2’

Хотя бы 2.4 укажи, что ли.

на хосте есть такой юзер ид и группа ид

Это вообще пофиг. Пользователь в контейнере к этому не имеет отношения.

standard_init_linux.go:211: exec user process caused «permission denied»

У пользователя с uid 1000 нет прав на запуск какого-то процесса или например на открытие 80 порта, как того хочет apache внутри контейнера.

AnDoR ★★★★★
()
Ответ на: комментарий от kommersant

разве докер не должен сам решать вопросы с правами?

Ахахахаха!

Ты ещё наверное думаешь, что пользователь, от которого контейнер запускается, будет иметь права на запись в смонтированный volume?

AnDoR ★★★★★
()
Последнее исправление: AnDoR (всего исправлений: 2)
Ответ на: комментарий от AnDoR

контейнер крутится под рутом и файлы создаются под рутом в volume , и это неудобно на хост машине
также в контейнере крутится www-data и у него нет прав писать в volume
как разрулить?
я смотрел несколько файлов docker-compose и там нигде не было строк с правами, значит что это тривиальная задача?

kommersant ★★
() автор топика
Ответ на: комментарий от kommersant

как разрулить?

Хаками и страданиями.

Для этих целей, например, в entrypoint образа mysql-server используются mkdir и chown

я смотрел несколько файлов docker-compose и там нигде не было строк с правами, значит что это тривиальная задача?

Наоборот. В данном случае это значит, что нет нормального готового решения.

AnDoR ★★★★★
()
Ответ на: комментарий от AnDoR

получается нет простого штатного решения этого вопроса?
хотя бы пробрасывать текущего юзера в контейнер и уже от него создавать файлы

kommersant ★★
() автор топика
Ответ на: комментарий от kommersant
Ответ на: комментарий от kommersant

Ну можно сделать по разному. Можно сбилдить докеримидж добавив туда пользователей с нужным uid/gid, можно засунуть /etc/passwd из системы так же как вы пробрасываете другие файлы через volume, можно в скрипт запускаемый из entrypoint запихать и от туда добавлять.

выбор велик, внутри это все тот же Linux только без ядра и сервис менеджера. вы даже можете тупо через chroot поиграть с правами как бы вы их хотели разруливать.

Не надо думать что все проблемы решены, попробуйте на флэшку пописать а потом вставить в систему где нет этого uid от которого была запись

st4l1k ★★
()
Последнее исправление: st4l1k (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.