• Как правильно работать с пользователями в Docker-контейнерах?

    gecube
    @gecube
    системный администратор, программист... все дела..
    > Как работает параметр user при запуске докер-контейнеров и, самое главное - как обрабатывать его при написании своих Dockerfile'ов?

    никак. Параметр user это костыль, который позволяет софт запускать не от root'ового пользователя. Объяснять почему запускать в докере под пользователем 0 (root) что-либо - долго, но если кратко, то это очень плохо и не секурно. Соответственно, правильный путь Вы уже поняли:

    1. определять entrypoint контейнера как свой самописанный docker-entrypoint.sh скрипт
    2. в docker run оставить возможность передать ключ (точнее - переменную среды) USER
    3. в docker-entrypoint.sh его (ее, переменную среды) подхватывать и изменять через chmod/chown нужные файлы в bind-mount (каталогах, доступных и в контейнере, и на хосте) и через утилиту gosu переключаться в нужного пользователя
    4. и только как завершающий этап - запускать свой сервис в докере


    Что еще добавить. Все эти проблемы с chown/chmod возникают только если необходимо перегонять файлы между контейнером и хостом. Если этой задачи не стоит, то и все приседания и не нужны. А если все-таки нужно, то есть еще два способа это сделать без колдования с правами:
    • команда docker cp
    • использование pipe: docker exec container_name cat MY_FILE > path_on_host или аналогично
    Ответ написан
    4 комментария
  • Как правильно работать с пользователями в Docker-контейнерах?

    planc
    @planc
    user - это словесное представление для удобства, как домены в интернете
    у файла нет параметра имя юзера, имя группы юзера, там как ip адреса - номер юзера и номер группы юзера

    допустим я юзер dka на хосте uid/gid 1000

    у меня папка /tmp/docker с кодом

    я запускаю дебиан в контейнере и добавляю туда свою папку, которая будет /code
    docker run -v /tmp/docker:/code -it --rm debian bash


    создаю юзера внутри контейнера с uid 1000 gid 1000 ( как у моего юзера на хосте)
    root@364785fa76ce:/code# groupadd -g 1000 my_docker_user_group
    root@364785fa76ce:/code# useradd --uid 1000 --gid 1000 my_docker_user


    прыгаю под нового юзера с помощью su (в докер файле это директива USER)

    root@364785fa76ce:/code# su my_docker_user

    все, теперь я могу кодить на хосте, а запускать в контейнере и у меня не будет проблем с правами на файлы
    Ответ написан
    1 комментарий
  • REST FUL API на Laravel vs Микрофраемворк?

    ivanvorobei
    @ivanvorobei Автор вопроса
    iOS разработчик, канал https://t.me/sparrowcode
    Подведу итог для ищущих ответ:
    Laravel, Lumen, Slim, Silex и т.д. - фраемворки для разработки сайтов. Побочно на них можно реализовывать API.
    Если нужен голый роутинг - Slim
    Если нужны плюшки - Lumen

    Laravel для API излишен однозначно.
    Ответ написан
    Комментировать