Introductie tot Docker
Tim Sangster
Software Engineer @ DataCamp
FROM, RUN en COPY werken samen via het bestandssysteem.
COPY /projects/pipeline_v3/start.sh /app/start.sh
RUN /app/start.sh
Sommige beïnvloeden andere instructies direct:
WORKDIR: Wijzigt de werkmap voor alle volgende instructiesUSER: Wijzigt de gebruiker voor alle volgende instructiesAlle paden starten vanaf de root van het bestandssysteem:
COPY /projects/pipeline_v3/ /app/
Wordt onoverzichtelijk met lange paden:
COPY /projects/pipeline_v3/ /home/my_user_with_a_long_name/work/projects/app/
Gebruik anders WORKDIR:
WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
In plaats van telkens het volledige pad:
RUN /home/repl/projects/pipeline/init.sh
RUN /home/repl/projects/pipeline/start.sh
Stel WORKDIR in:
WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
In plaats van het volledige pad:
CMD /home/repl/projects/pipeline/start.sh
Stel WORKDIR in:
WORKDIR /home/repl/projects/pipeline/
CMD start.sh
Een override-commando draait ook in WORKDIR:
docker run -it pipeline_image start.sh
$$
Best practice
Ubuntu -> standaard root
FROM ubuntu --> Standaard root-gebruiker
RUN apt-get update --> Draait als root
USER-instructie in Dockerfile:
FROM ubuntu --> Standaard root-gebruiker
USER repl --> Wijzigt gebruiker naar repl
RUN apt-get update --> Draait als repl
Dockerfile stelt de gebruiker in op repl:
FROM ubuntu --> Standaard root-gebruiker
USER repl --> Wijzigt gebruiker naar repl
RUN apt-get update --> Draait als repl
Start containers ook met gebruiker repl:
docker run -it ubuntu bash
repl@container: whoami
repl
| Gebruik | Dockerfile-instructie |
|---|---|
| Huidige werkmap wijzigen | WORKDIR <path> |
| Huidige gebruiker wijzigen | USER <user-name> |
Introductie tot Docker