Зміна користувачів і робочого каталогу

Вступ до Docker

Tim Sangster

Software Engineer @ DataCamp

Взаємодія інструкцій Dockerfile

FROM, RUN і COPY взаємодіють через файлову систему.

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

Деякі безпосередньо впливають на наступні інструкції:

  • WORKDIR: змінює робочий каталог для всіх наступних інструкцій
  • USER: змінює користувача для всіх наступних інструкцій
Вступ до Docker

WORKDIR — зміна робочого каталогу

Починати всі шляхи від кореня файлової системи:

COPY /projects/pipeline_v3/ /app/

Стає захаращеним із довгими шляхами:

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

Альтернатива — використати WORKDIR:

WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
Вступ до Docker

RUN у поточному робочому каталозі

Замість повного шляху в кожній команді:

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

Встановіть WORKDIR:

WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
Вступ до Docker

Зміна запуску за допомогою WORKDIR

Замість повного шляху:

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

Встановіть WORKDIR:

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

Перевизначена команда теж виконуватиметься в WORKDIR:

docker run -it pipeline_image start.sh
Вступ до Docker

Дозволи в Linux

  • Права доступу призначаються користувачам.
  • Root — це спеціальний користувач з усіма правами.

$$

Найкраща практика

  • Використовуйте root, щоб створити користувачів із правами для конкретних завдань.
  • Припиніть використовувати root.
Вступ до Docker

Зміна користувача в образі

Найкраща практика: не запускайте все від імені root

Ubuntu -> root за замовчуванням

FROM ubuntu         --> Користувач root за замовчуванням
RUN apt-get update  --> Виконується як root

Інструкція Dockerfile USER:

FROM ubuntu         --> Користувач root за замовчуванням
USER repl           --> Змінює користувача на repl
RUN apt-get update  --> Виконується як repl
Вступ до Docker

Зміна користувача в контейнері

Dockerfile встановлює користувача repl:

FROM ubuntu         --> Користувач root за замовчуванням
USER repl           --> Змінює користувача на repl
RUN apt-get update  --> Виконується як repl 

Також контейнери запускатимуться з користувачем repl:

docker run -it ubuntu bash
repl@container: whoami
repl
Вступ до Docker

Підсумок

Використання Інструкція Dockerfile
Змінити поточний робочий каталог WORKDIR <path>
Змінити поточного користувача USER <user-name>
Вступ до Docker

Час для практики!

Вступ до Docker

Preparing Video For Download...