Alpine używa polecenia adduser
i addgroup
do tworzenia użytkowników i grup (zamiast useradd
i usergroup
).
FROM alpine:latest
# Create a group and user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
# Tell docker that all future commands should run as the appuser user
USER appuser
Flagi dla adduser
to:
Użycie: adduser [OPTIONS] USER [GROUP]
Utwórz nowego użytkownika lub dodaj USER do GROUP
-h DIR Katalog domowy
-g GECOS Pole GECOS
-s SHELL Powłoka logowania
-G GRP Group
-S Utwórz użytkownika systemu
-D Nie przypisuj hasła
-H Nie twórz katalogu domowego
-u UID Identyfikator użytkownika
-k Katalog szkieletów SKEL (/ etc / skel)
Dodaj oficjalne dokumenty nowego użytkownika
USER 405
który jest użytkownikiem gościa w Alpine Linux.USER guest
?adduser
iaddgroup
różnią się odadduser
iaddgroup
są dostarczane przez Debiana i Ubuntu, które z kolei są frontonami douseradd
igroupadd
. Warto zauważyć, że polecenia Debiana i Ubuntu obsługują tylko opcje długich formularzy. Zobacz: manpages.debian.org/stretch/adduser/adduser.8.en.htmlPolecenia to
adduser
iaddgroup
.Oto szablon dla Dockera, którego możesz używać w środowiskach busybox (alpine), a także w środowiskach opartych na Debianie (Ubuntu itp.):
Zwróć uwagę na następujące kwestie:
--disabled-password
zapobiega pytaniu o hasło--gecos ""
omija monit o wpisanie „Full Name” itp. w systemach opartych na Debianie--home "$(pwd)"
ustawia dom użytkownika na WORKDIR. Możesz tego nie chcieć.--no-create-home
zapobiega kopiowaniu cruft do katalogu z/etc/skel
W opisie użycia tych aplikacji brakuje długich flag obecnych w kodzie dla adduser i addgroup .
Następujące flagi o długiej formie powinny działać zarówno w pochodnych alpejskich, jak i debianowych:
Dodaj użytkownika
Należy zauważyć, że jeśli
--ingroup
nie jest ustawiony, GID jest przypisywany tak, aby pasował do UID. Jeśli GID odpowiadający podanemu UID już istnieje, adduser nie powiedzie się.Dodaj grupę
Wszystko to odkryłem, próbując napisać własną alternatywę dla projektu fixuid do uruchamiania kontenerów jako UID / GID hosta.
Mój skrypt pomocniczy punktu wejścia można znaleźć na GitHub.
Intencją jest dołączenie tego skryptu jako pierwszego argumentu,
ENTRYPOINT
który powinien spowodować, że Docker wywnioskuje UID i GID z odpowiedniego montowania powiązania.Do określenia, skąd należy wywnioskować uprawnienia, może być wymagana zmienna środowiskowa „TEMPLATE”.
(W chwili pisania tego tekstu nie mam dokumentacji do mojego skryptu. Nadal jest na liście rzeczy do zrobienia !!)
źródło