Ändra användare och arbetskatalog

Introduktion till Docker

Tim Sangster

Software Engineer @ DataCamp

Interaktion mellan Dockerfile-instruktioner

FROM, RUN och COPY interagerar via filsystemet.

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

Vissa instruktioner påverkar andra direkt:

  • WORKDIR: Ändrar arbetskatalogen för alla följande instruktioner
  • USER: Ändrar användaren för alla följande instruktioner
Introduktion till Docker

WORKDIR – Ändra arbetskatalogen

Med alla sökvägar från filsystemets rot:

COPY /projects/pipeline_v3/ /app/

Blir otympligt med långa sökvägar:

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

Använd istället WORKDIR:

WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
Introduktion till Docker

RUN i den aktuella arbetskatalogen

Istället för att ange hela sökvägen för varje kommando:

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

Ange WORKDIR:

WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
Introduktion till Docker

Ändra startbeteendet med WORKDIR

Istället för att ange hela sökvägen:

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

Ange WORKDIR:

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

Åsidosatt kommando körs också i WORKDIR:

docker run -it pipeline_image start.sh
Introduktion till Docker

Linux-behörigheter

  • Behörigheter tilldelas användare.
  • Root är en särskild användare med alla behörigheter.

$$

Bästa praxis

  • Använd root för att skapa nya användare med behörigheter för specifika uppgifter.
  • Sluta använda root.
Introduktion till Docker

Ändra användaren i en image

Bästa praxis: Kör inte allt som root

Ubuntu -> root som standard

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

USER-instruktionen i Dockerfile:

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

Ändra användaren i en container

Dockerfile som anger repl som användare:

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

Startar även containrar med användaren repl:

docker run -it ubuntu bash
repl@container: whoami
repl
Introduktion till Docker

Sammanfattning

Användning Dockerfile-instruktion
Ändra aktuell arbetskatalog WORKDIR <path>
Ändra aktuell användare USER <user-name>
Introduktion till Docker

Nu kör vi en övning!

Introduktion till Docker

Preparing Video For Download...