такое?
USER $(whoami)
через ENV, ARG не работает
А зачем?
это как пример, нужно именно заезекьютить команду баша для USER конкретно хочу USER задавать через gid и uid созданного юзера, типа такого: USER $(id -u username):$(id -g username)
как именно не работает? Собственно только так и можно какую-то динамику в USER внести
проблемы с кубером, ему надо скармливать только в таком формате
насколько я понимаю, ARG и ENV не могут воспроизводить баш команды, типа такого ENV MYVAR=$(whoami)
не могут, или хадкод или извне передавать при билде
какую задачу решаем?
При чём тут кубе и докерфайл?
результирующий имадж используется в кубере
.spec.securityContext.runAsUser — This field specifies the User ID (UID) with which to run the Entrypoint (default executable of the image) of the container process. If the field value is not specified, it defaults to the UID defined in the image metadata.
а у меня нет никакого доступа к настройкам кубера, отдают имадж и уже другие люди его используют
Тебе нужно какие то любые ID задать?
создается юзер и группа, тоже в докерфайле, мне надо вытащить uid и gid которые им присвоились. но при этом нельзя подсовывать какие то свои значения в useradd и groupadd при создании
А те кто задачу ставил уверены что это реалезуемо в Dockerfile ?
нет, я вот и выясняю)
Мне даже интересно, почему нельзя свои ID подсунуть
Потому что городить огород интереснее
В Докерфайле ты можешь создать юзера и скачать с внешнего сервера файл. По идее ты можешь грепнуть /etc/passwd найти id твоего юзера (имя то известно?) и послать на сервер или выложить куданить. Не?
Ну или смаунтить /etc/passwd как волум
Ну если надо прокинуть юзера с локального хоста в контейнер то там всё просто FROM ubuntu:xenial-20170214 ARG UNAME=testuser ARG UID=1000 ARG GID=1000 RUN groupadd -g $GID -o $UNAME RUN useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME USER $UNAME CMD /bin/bash docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) \ -f bb.dockerfile -t testimg .
> USER $(id -u username):$(id -g username) Так сделать нельзя. Юзверь указывается рантаймом в момент запуска контейнера через сисколлы setuid и setgid. Все это делается вне шелла, естественно, поэтому всякие шеловские хрени как у вас не не работают. Чтобы пускать под нужным юзверем контейнер - надо указывать юзверя рантайму. Для докера - это —user флаг. В кубе это runasuser в сесурити контексте.
Обсуждают сегодня