Einführung in Docker
Tim Sangster
Software Engineer @ DataCamp
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 AnweisungenUSER: wechselt den Benutzer für alle folgenden AnweisungenAlle 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/
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
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
$$
Best Practice
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
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
| Verwendung | Dockerfile-Anweisung |
|---|---|
| Wechseln des aktuelle Arbeitsverzeichnisses | WORKDIR <path> |
| Wechseln des aktuellen Benutzers | USER <user-name> |
Einführung in Docker