Schimbarea utilizatorului și a directorului de lucru

Introducere în Docker

Tim Sangster

Software Engineer @ DataCamp

Interacțiunea instrucțiunilor Dockerfile

FROM, RUN și COPY interacționează prin sistemul de fișiere.

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

Unele influențează direct alte instrucțiuni:

  • WORKDIR: Schimbă directorul de lucru pentru toate instrucțiunile următoare
  • USER: Schimbă utilizatorul pentru toate instrucțiunile următoare
Introducere în Docker

WORKDIR - Schimbarea directorului de lucru

Pornind toate căile din rădăcina sistemului de fișiere:

COPY /projects/pipeline_v3/ /app/

Devine incomod cu căi lungi:

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

Alternativ, utilizați WORKDIR:

WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
Introducere în Docker

RUN în directorul de lucru curent

În loc să utilizați calea completă pentru fiecare comandă:

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

Setați WORKDIR:

WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
Introducere în Docker

Modificarea comportamentului la pornire cu WORKDIR

În loc să utilizați calea completă:

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

Setați WORKDIR:

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

Comanda de suprascriere va fi și ea rulată în WORKDIR:

docker run -it pipeline_image start.sh
Introducere în Docker

Permisiuni Linux

  • Permisiunile sunt atribuite utilizatorilor.
  • Root este un utilizator special cu toate permisiunile.

$$

Bună practică

  • Utilizați root pentru a crea utilizatori noi cu permisiuni pentru sarcini specifice.
  • Încetați utilizarea root.
Introducere în Docker

Schimbarea utilizatorului într-o imagine

Bună practică: Nu rulați totul ca root

Ubuntu -> root implicit

FROM ubuntu         --> Utilizator root implicit
RUN apt-get update  --> Rulat ca root

Instrucțiunea USER în Dockerfile:

FROM ubuntu         --> Utilizator root implicit
USER repl           --> Schimbă utilizatorul la repl
RUN apt-get update  --> Rulat ca repl
Introducere în Docker

Schimbarea utilizatorului într-un container

Dockerfile care setează utilizatorul la repl:

FROM ubuntu         --> Utilizator root implicit
USER repl           --> Schimbă utilizatorul la repl
RUN apt-get update  --> Rulat ca repl 

Va porni și containerele cu utilizatorul repl:

docker run -it ubuntu bash
repl@container: whoami
repl
Introducere în Docker

Rezumat

Utilizare Instrucțiune Dockerfile
Schimbarea directorului de lucru curent WORKDIR <path>
Schimbarea utilizatorului curent USER <user-name>
Introducere în Docker

Timp pentru practică!

Introducere în Docker

Preparing Video For Download...