Докер ADD - обнаружил ошибку или функцию? - PullRequest
1 голос
/ 21 октября 2019

У меня проблема с добавлением файла к изображению и установкой владельца с помощью флага --chown. В частности, вот файл Docker, добавляющий простой текстовый файл:

FROM fedora:24

ARG user_name=slave
ARG user_uid=1000
ARG user_home=/home/$user_name/

RUN useradd -l -u ${user_uid} -ms /bin/bash $user_name

WORKDIR ${user_home}
USER ${user_name}
ADD --chown=1397765041:1397765041 test.txt ./
CMD ls -l

Это приводит к ожидаемому владению text.txt, как видно:

$ docker run --rm -it bm/tmp:latest
total 4
-rw-r--r-- 1 some_user 1397765041 6 Oct 21 20:00 test.txt

Круто. Теперь, если я изменю test.txt на tar-файл (например, boost_1_57_0.tar.bz2) и перестрою, я получу следующее:

$ docker run --rm -it bm/tmp:latest
total 4
drwx------ 8 501 root 4096 Oct 31  2014 boost_1_57_0

Вот как я строю (вероятно, нетнезависимо от того):

docker build -t bm/tmp --build-arg user_name=some_user --build-arg user_uid=1397765041 .

Как мы видим, в этом случае право собственности НЕ соответствует ожидаемому. Кажется, поведение --chown отличается от двух случаев, показанных выше. Я знаю, что ADD автоматически извлекает гудроны. Я не знаю, как устанавливается владение в случае, когда файл является tar-файлом. Кто-нибудь?

1 Ответ

3 голосов
/ 21 октября 2019

К сожалению, ADD --chown работает только для обычных файлов. ADD с тарболом использует владение и разрешения, указанные в тарболе.

Обходные пути:

  • Выполните tar самостоятельно с --owner / --owner-map / --group/--group-map.
  • chown -R после ADD.
...