Wprowadzenie do Dockera
Tim Sangster
Software Engineer @ DataCamp
FROM, RUN i COPY współdziałają przez system plików.
COPY /projects/pipeline_v3/start.sh /app/start.sh
RUN /app/start.sh
Niektóre instrukcje wpływają bezpośrednio na inne:
WORKDIR: Zmienia katalog roboczy dla wszystkich kolejnych instrukcjiUSER: Zmienia użytkownika dla wszystkich kolejnych instrukcjiRozpoczynanie wszystkich ścieżek od katalogu głównego:
COPY /projects/pipeline_v3/ /app/
Długie ścieżki stają się nieczytelne:
COPY /projects/pipeline_v3/ /home/my_user_with_a_long_name/work/projects/app/
Alternatywnie użyj WORKDIR:
WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
Zamiast używać pełnej ścieżki w każdym poleceniu:
RUN /home/repl/projects/pipeline/init.sh
RUN /home/repl/projects/pipeline/start.sh
Ustaw WORKDIR:
WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
Zamiast używać pełnej ścieżki:
CMD /home/repl/projects/pipeline/start.sh
Ustaw WORKDIR:
WORKDIR /home/repl/projects/pipeline/
CMD start.sh
Nadpisane polecenie również zostanie uruchomione w WORKDIR:
docker run -it pipeline_image start.sh
$$
Najlepsza praktyka
Ubuntu -> root domyślnie
FROM ubuntu --> Root user by default
RUN apt-get update --> Run as root
Instrukcja USER w Dockerfile:
FROM ubuntu --> Root user by default
USER repl --> Changes the user to repl
RUN apt-get update --> Run as repl
Dockerfile ustawiający użytkownika na repl:
FROM ubuntu --> Root user by default
USER repl --> Changes the user to repl
RUN apt-get update --> Run as repl
Kontenery będą również uruchamiane jako użytkownik repl:
docker run -it ubuntu bash
repl@container: whoami
repl
| Zastosowanie | Instrukcja Dockerfile |
|---|---|
| Zmiana bieżącego katalogu roboczego | WORKDIR <path> |
| Zmiana bieżącego użytkownika | USER <user-name> |
Wprowadzenie do Dockera