GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie füge ich Benutzer zum Docker-Container hinzu?

Der Trick besteht darin, useradd zu verwenden anstelle seines interaktiven Wrappers adduser .Benutzer erstelle ich normalerweise mit:

RUN useradd -ms /bin/bash newuser

Dadurch wird ein Home-Verzeichnis für den Benutzer erstellt und sichergestellt, dass bash die Standard-Shell ist.

Sie können dann hinzufügen:

USER newuser
WORKDIR /home/newuser

zu Ihrer Dockerdatei. Jeder nachfolgende Befehl sowie interaktive Sitzungen werden als Benutzer newuser ausgeführt :

docker run -t -i image
[email protected]:~$

Möglicherweise müssen Sie newuser eingeben die Berechtigungen zum Ausführen der Programme, die Sie ausführen möchten, bevor Sie den Benutzerbefehl aufrufen.

Die Verwendung von nicht privilegierten Benutzern innerhalb von Containern ist aus Sicherheitsgründen eine gute Idee. Es hat auch ein paar Nachteile. Am wichtigsten ist, dass Personen, die Bilder von Ihrem Bild ableiten, wieder zum Root wechseln müssen, bevor sie Befehle mit Superuser-Rechten ausführen können.


Das Hinzufügen von Benutzern im Docker und das Ausführen Ihrer App unter diesem Benutzer ist aus Sicherheitsgründen eine sehr gute Vorgehensweise. Dazu würde ich die folgenden Schritte empfehlen:

FROM node:10-alpine

# Copy source to container
RUN mkdir -p /usr/app/src

# Copy source code
COPY src /usr/app/src
COPY package.json /usr/app
COPY package-lock.json /usr/app

WORKDIR /usr/app

# Running npm install for production purpose will not run dev dependencies.
RUN npm install -only=production    

# Create a user group 'xyzgroup'
RUN addgroup -S xyzgroup

# Create a user 'appuser' under 'xyzgroup'
RUN adduser -S -D -h /usr/app/src appuser xyzgroup

# Chown all the files to the app user.
RUN chown -R appuser:xyzgroup /usr/app

# Switch to 'appuser'
USER appuser

# Open the mapped port
EXPOSE 3000

# Start the process
CMD ["npm", "start"]

Die obigen Schritte sind ein vollständiges Beispiel für das Kopieren von NodeJS-Projektdateien, das Erstellen einer Benutzergruppe und eines Benutzers, das Zuweisen von Berechtigungen für den Benutzer für den Projektordner, das Wechseln zum neu erstellten Benutzer und das Ausführen der App unter diesem Benutzer.


Ubuntu

Versuchen Sie die folgenden Zeilen in Dockerfile :

RUN useradd -rm -d /home/ubuntu -s /bin/bash -g root -G sudo -u 1001 ubuntu
USER ubuntu
WORKDIR /home/ubuntu

useradd Optionen (siehe:man useradd ):

  • -r , --system Erstellen Sie ein Systemkonto.
  • -m , --create-home Erstellen Sie das Home-Verzeichnis des Benutzers.
  • -d , --home-dir HOME_DIR Home-Verzeichnis des neuen Kontos.
  • -s , --shell SHELL Login-Shell des neuen Kontos.
  • -g , --gid GROUP Name oder ID der primären Gruppe.
  • -G , --groups GROUPS Liste der Zusatzgruppen.
  • -u , --uid UID Benutzer-ID angeben.
  • -p , --password PASSWORD Verschlüsseltes Passwort des neuen Accounts (z.B. ubuntu ).

Passwort des Standardbenutzers festlegen

Um das Benutzerkennwort festzulegen, fügen Sie -p "$(openssl passwd -1 ubuntu)" hinzu bis useradd Befehl.

Alternativ fügen Sie Ihrem Dockerfile die folgenden Zeilen hinzu :

SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN echo 'ubuntu:ubuntu' | chpasswd

Die erste Shell-Anweisung besteht darin, sicherzustellen, dass -o pipefail Option ist vor RUN aktiviert mit einem Rohr drin. Lesen Sie mehr:Hadolint:Linting your Dockerfile.


Um die interaktiven Fragen von adduser zu vermeiden, können Sie es mit diesen Parametern aufrufen:

RUN adduser --disabled-password --gecos '' newuser

Der --gecos Mit dem Parameter werden die Zusatzinformationen eingestellt. In diesem Fall ist es einfach leer.

Verwenden Sie auf Systemen mit Busybox (wie Alpine)

RUN adduser -D -g '' newuser

Siehe busybox adduser


Linux
  1. So fügen Sie Benutzer zu einer Gruppe in Linux hinzu

  2. So führen Sie MySQL in einem Docker-Container aus

  3. So beenden Sie einen Docker-Container

  4. Wie sende ich ein Signal an das Programm, das in einem Docker-Container ausgeführt wird?

  5. So führen Sie einen Cron-Job in einem Docker-Container aus

Wie man Benutzer in Debian hinzufügt und entfernt

So führen Sie PHPMyAdmin in einem Docker-Container aus

So führen Sie Grafana in einem Docker-Container aus

So fügen Sie einem vorhandenen Docker-Container ein Volume hinzu

So führen Sie Docker-Container aus

So erstellen/fügen Sie Benutzer in Linux hinzu