Introduction to Docker
Tim Sangster
Software Engineer @ DataCamp
FROM, RUN a COPY komunikují prostřednictvím souborového systému.
COPY /projects/pipeline_v3/start.sh /app/start.sh
RUN /app/start.sh
Některé instrukce ovlivňují ostatní přímo:
WORKDIR: Mění pracovní adresář pro všechny následující instrukceUSER: Mění uživatele pro všechny následující instrukceZačátek všech cest od kořene souborového systému:
COPY /projects/pipeline_v3/ /app/
Při dlouhých cestách se to stává nepřehledným:
COPY /projects/pipeline_v3/ /home/my_user_with_a_long_name/work/projects/app/
Alternativně použijte WORKDIR:
WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
Místo použití úplné cesty pro každý příkaz:
RUN /home/repl/projects/pipeline/init.sh
RUN /home/repl/projects/pipeline/start.sh
Nastavte WORKDIR:
WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
Místo použití úplné cesty:
CMD /home/repl/projects/pipeline/start.sh
Nastavte WORKDIR:
WORKDIR /home/repl/projects/pipeline/
CMD start.sh
Přepisující příkaz bude také spuštěn v WORKDIR:
docker run -it pipeline_image start.sh
$$
Osvědčená praxe
Ubuntu -> root ve výchozím nastavení
FROM ubuntu --> Root user by default
RUN apt-get update --> Run as root
Instrukce USER v Dockerfile:
FROM ubuntu --> Root user by default
USER repl --> Changes the user to repl
RUN apt-get update --> Run as repl
Dockerfile nastavující uživatele na repl:
FROM ubuntu --> Root user by default
USER repl --> Changes the user to repl
RUN apt-get update --> Run as repl
Kontejnery budou také spouštěny jako uživatel repl:
docker run -it ubuntu bash
repl@container: whoami
repl
| Použití | Instrukce Dockerfile |
|---|---|
| Změna aktuálního pracovního adresáře | WORKDIR <path> |
| Změna aktuálního uživatele | USER <user-name> |
Introduction to Docker