Benutzer und Arbeitsverzeichnis ändern

Einführung in Docker

Tim Sangster

Software Engineer @ DataCamp

Interaktion mit Dockerfile-Anweisungen

FROM, RUN und COPY arbeiten über das Dateisystem zusammen.

COPY /projects/pipeline_v3/start.sh /app/start.sh
RUN /app/start.sh

Einige Anweisungen beeinflussen andere direkt:

  • WORKDIR: ändert das Arbeitsverzeichnis für alle folgenden Anweisungen
  • USER: wechselt den Benutzer für alle folgenden Anweisungen
Einführung in Docker

WORKDIR – Ändern des Arbeitsverzeichnisses

Alle Pfade an der Wurzel des Dateisystems starten:

COPY /projects/pipeline_v3/ /app/

Wird bei der Arbeit mit langen Pfaden unübersichtlich:

COPY /projects/pipeline_v3/ /home/my_user_with_a_long_name/work/projects/app/

Alternativ WORKDIR nutzen:

WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
Einführung in Docker

RUN im aktuellen Arbeitsverzeichnis

Anstatt für jeden Befehl den ganzen Pfad zu nehmen:

RUN /home/repl/projects/pipeline/init.sh
RUN /home/repl/projects/pipeline/start.sh

WORKDIR festlegen:

WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
Einführung in Docker

Ändern des Startverhaltens mit WORKDIR

Anstatt den ganzen Pfad zu nehmen:

CMD /home/repl/projects/pipeline/start.sh

WORKDIR festlegen:

WORKDIR /home/repl/projects/pipeline/
CMD start.sh

Der überschreibende Befehl wird auch in WORKDIR ausgeführt:

docker run -it pipeline_image start.sh
Einführung in Docker

Linux-Berechtigungen

  • Berechtigungen werden Benutzern zugewiesen
  • Root ist spezieller Benutzer mit allen Berechtigungen.

$$

Best Practice

  • Root zum Erstellen neuer Benutzer mit Berechtigungen für bestimmte Aufgaben nutzen
  • Danach Root nicht weiter verwenden
Einführung in Docker

Benutzer in einem Image ändern

Best Practice: nicht alles als Root ausführen

Ubuntu -> Standardmäßig Root

FROM ubuntu         --> Root user by default
RUN apt-get update  --> Run as root

USER-Dockerfile-Anweisung:

FROM ubuntu         --> Root user by default
USER repl           --> Changes the user to repl
RUN apt-get update  --> Run as repl
Einführung in Docker

Benutzer in einem Container ändern

Dockerfile, das den Benutzer auf repl setzt:

FROM ubuntu         --> Root user by default
USER repl           --> Changes the user to repl
RUN apt-get update  --> Run as repl 

Startet auch Container mit repl-Benutzer:

docker run -it ubuntu bash
repl@container: whoami
repl
Einführung in Docker

Zusammenfassung

Verwendung Dockerfile-Anweisung
Wechseln des aktuelle Arbeitsverzeichnisses WORKDIR <path>
Wechseln des aktuellen Benutzers USER <user-name>
Einführung in Docker

Zeit zum Üben!

Einführung in Docker

Preparing Video For Download...