Intereting Posts
Docker swarm использует локальный экземпляр службы Не удалось создать чангель. Тайм-аут GRPC Jupyter ноутбук на Docker не работает за прокси Передача различных аргументов при запуске Docker Image Несколько раз Dockerfile: $ HOME не работает с инструкциями ADD / COPY развернуть одно изображение докеры на один экземпляр ec2 Автоматизировать добавление новых тегов репозитория в Docker Registry Automated Build Почему Apache является основным веб-сервером в контейнерах Docker (для PHP) как использовать докер в кластере кубернетов с фланелевой сетью Добавление newuser в контейнер докеров с привилегиями sudo Зачем нужна опция «-expose» в Docker? Режим докеры (docker 1.13 & compose v3) действительно обеспечивает обновление или развертывание с нулевым временем простоя? Добавить облако докеров в дженкинсах Неожиданная ошибка при использовании Vagrant с использованием файла yaml docker: «commit» требует максимум 2 аргумента

Докеры разрешают хост пользователя в контейнере

Я ищу «чистое» решение для совместного использования тома и совместного использования разрешений. Я имею в виду, если это возможно, я хотел бы иметь одного и того же пользователя в контейнере, чем локальный пользователь, который его запустил.

В настоящее время я использую:

docker run --rm -v ~/Projects/:/projects/ mycontainer 

Это работает, но проблема в том, что когда мой контейнер пишет некоторый контент в этом томе, он является root, который является собственником, а не моим локальным пользователем.

Каков наилучший способ справиться с этой проблемой? Если это возможно, я не хочу создавать пользовательскую информацию в файле Docker, потому что я хочу поделиться этим контейнером с коллегами, и я хочу избежать каких-либо разрешений между локальным пользователем и пользователем контейнера.

благодаря

Вы можете указать пользователя в команде docker run :

 --user, -u Username or UID (format: <name|uid>[:<group|gid>]) 

Если вы используете числовой UID и GID хост-пользователя, создаваемые файлы будут принадлежать ему.

Спасибо за помощь Генри.

Мое полное решение было:

 docker run --rm -e USER_ID=$(echo "$UID") -v ~/Projects/:/projects/ mycontainer 

И у меня этот скрипт как значение точки входа:

 #!/bin/bash adduser -D -u $USER_ID alpine &>/dev/null cd /projects/ su alpine -c 'mycommand ...." 

При этом мой контейнер может получить доступ и добавить / изменить содержимое в папке «Проекты» с теми же правами, что и мой локальный пользователь.