Я новичок в Docker и видел, что некоторые сценарии для запуска контейнерного программного обеспечения требуют указания любого из них для соответствия определенному пользователю и группе. Поэтому мне было интересно, в чем разница между ними? Примеры ниже для иллюстрации.
Jellyfin использует пару UID / GID:
docker run -d \
--name="Jellyfin" \
--restart=always \
--network=host \
-p 8096:8096 \
-e UID=1000 \
-e GID=1000 \
-v /media:/media \
-v $HOME/docker/jellyfin/config:/config \
jellyfin/jellyfin:latest
Пока Caliber-web использует набор PUID / PGID:
docker create --name=calibre-web --restart=always \
-v ~/books:/books \
-v /etc/localtime:/etc/localtime:ro \
-e PGID=1000 -e PUID=1000 \
-p 8081:8083 \
technosoft2000/calibre-web
В поисках информации я даже видел несколько случайных репозиториев на github в какой-то момент это изменилось с прежнего на более позднее; в чем разница между обоими вариантами?
Я понял ваш вопрос: «Почему эти переменные называются PUID и PGID, а не UID и GID»? На самом деле их можно было назвать как угодно. Ни Docker, ни Linux это не волнует. Приложение решает, что с ними делать.
Дальнейшие поиски показали, что это просто соглашение, а некоторые приложения делают свое дело. Например, одно приложение использует переменные среды MAYAN_USER_UID и MAYAN_USER_GID соответственно.
Параметр -e
устанавливает переменные среды. поиск в Google для environment variable PUID
дает среди прочего такой результат:
Понимание PUID и PGID на linuxserver.io, которые предоставляют образ докера для calibre-web.
Цитата с той страницы:
Использование PUID и PGID позволяет нашим контейнерам сопоставлять внутреннего пользователя контейнера с пользователем на хост-машине. Все наши контейнеры используют этот метод сопоставления пользователей и должны применяться соответствующим образом.
Еще одно примечание с этой страницы:
Нам известно, что в последних версиях движка Docker появился флаг --user. Наши образы еще несовместимы с этим, поэтому мы рекомендуем продолжать использовать PUID и PGID.
Итак, необходимо запустить контейнер. Как это будет реализовано, зависит от разработчиков этих образов.