Як мені зробити Docker COPY як некоріонт?


143

Як будувати зображення Докера, як я можу COPYвносити файл у зображення, щоб отриманий файл належав користувачу, відмінному від root?

Відповіді:


206

Для версій v17.09.0-ce та новіших

Використовуйте необов'язковий прапор --chown=<user>:<group>з ADDабо COPYкомандами.

Наприклад

COPY --chown=<user>:<group> <hostPath> <containerPath>

Документація на прапор --chown тепер опублікована на головній довідковій сторінці Dockerfile .

Випуск 34263 був об'єднаний і доступний у випуску v17.09.0-ce .


Для версій, старших за v17.09.0-ce

Docker не підтримує COPYкористувачів, крім root. Вам потрібно chown/ chmodфайлу після в COPYкоманді.

Приклад Dockerfile:

from centos:6
RUN groupadd -r myuser && adduser -r -g myuser myuser
USER myuser
#Install code, configure application, etc...
USER root
COPY run-my-app.sh /usr/local/bin/run-my-app.sh
RUN chown myuser:myuser /usr/local/bin/run-my-app.sh && \
    chmod 744 /usr/local/bin/run-my-app.sh
USER myuser
ENTRYPOINT ["/usr/local/bin/run-my-app.sh"]

Раніше до v17.09.0-ce, Довідкова посилання для COPYкоманди сказала:

Усі нові файли та каталоги створюються з UID та GID 0.


Історія Ця функція відстежена через кілька випусків GitHub: 6119 , 9943 , 13600 , 27303 , 28499 , випуск 30110 .

Випуск 34263 - це проблема, в якій реалізована додаткова функція прапора, а випуск 467 оновив документацію.


3
Це неприємно, оскільки перезапис багатьох файлів став неймовірно повільним, оскільки оверлей2 став драйвером зберігання за замовчуванням
hbogert

1
Тим не менш, він створює великий додатковий шар зображення без видимих ​​причин (у моєму випадку:> 300 Мб для роботи chownна 40 МБ файлів).
Дірк

Є також одна перевага також для запуску chown разом із командою COPY, яка є зменшенням розміру. Якщо ми запустимо ці дві команди окремо (COPY <host_path> <source_path>; chown other_user: other_user), тоді вона створила один додатковий шар, який в підсумку подвоює розмір зображення.
abhishek thakur

Ця відповідь - рятівник. Дякую вам велике, вирішили проблему, з якою я боровся кілька годин.
Колбі Хілл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.