chmod некорректно работает в Docker

Кажется, что существует некоторое исходящее продолжение фильтрации брандмауэра. Вы могли установить и выполнить Wireshark и видеть, куда Ваши пакеты идут.

13
задан 22 April 2016 в 09:02
5 ответов

У меня была та же проблема, и кажется, что существует некоторая ошибка в докере или overlay2, если содержание каталога создается в одном слое, и его полномочия изменяются в другом.

Как обходное решение Вы могли скопировать источники во временный каталог:

COPY . /src

И затем перемещают его в /var/www/html и устанавливают полномочия (в одном RUN команда):

RUN rm -rf /var/www/html && mv /src /var/www/html &&\
    find /var/www/html/ -type d -exec chmod 755 {} \; &&\
    find /var/www/html/ -type f -exec chmod 644 {} \; &&\
    chmod -R 777 /var/www/html/app/cache /var/www/html/app/logs

Также я создал выпуск .

GitHub
11
ответ дан 20 November 2019 в 23:17

Я просто сделал эксперимент со следующим:

FROM alpine

LABEL MAINTAINER="YIMGA YIMGA Salathiel Genèse"
RUN apk add --no-cache inotify-tools
CMD [ "./script.sh" ]
WORKDIR /opt/app/
COPY src/ /opt/app/
RUN chmod a+x *.sh

И это просто работает отлично.

Однако

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

фиксация для dev режима просто к chmod a+x yourfile от хоста, который будет наследован в, составляют монтирование объема.

0
ответ дан 20 November 2019 в 23:17

Добавление попытки:

USER root

Это работало на меня.

2
ответ дан 20 November 2019 в 23:17

Оболочка по умолчанию ВЫПОЛНЕННЫХ в Докере является/bin/sh, и это - то, где полномочия, не устанавливаемые правильно на самом деле, имеют проблему.

, Но можно измениться на просто использование/bin/bash вместо этого, чтобы легко зафиксировать, заметить прежде и после списка

Step 7/9 : RUN /bin/bash -c 'ls -la; chmod +x gitlab-properties-builder.sh; ls -la'
---> Running in dc57ae77aa67

drwxr-xr-x. 3 root root      103 Mar  8 17:56 .
drwxr-xr-x. 1 root root       46 Mar  8 17:57 ..
drwxr-xr-x. 2 root root        6 Mar  7 20:47 config
-rw-r--r--. 1 root root     2340 Mar  7 21:20 gitlab-properties-builder.sh
-rw-r--r--. 5 root root 57325770 Mar  5 14:39 gitlab-scm-collector-2.0.5-SNAPSHOT.jar

drwxr-xr-x. 1 root root       42 Mar  8 17:56 .
drwxr-xr-x. 1 root root       61 Mar  8 17:57 ..
drwxr-xr-x. 2 root root        6 Mar  7 20:47 config
-rwxr-xr-x. 1 root root     2340 Mar  7 21:20 gitlab-properties-builder.sh
-rw-r--r--. 5 root root 57325770 Mar  5 14:39 gitlab-scm-collector-2.0.5-SNAPSHOT.jar
---> 8b5de6e348d3
каталогов
4
ответ дан 20 November 2019 в 23:17

Эта проблема вероятна результат VOLUME определение в восходящем Dockerfile. Когда объем определяется в Dockerfile, можно добавить файлы с COPY или ADD команда непосредственно в изображение. Однако RUN строка будет:

  • Создают временный контейнер с помощью определения изображения с текущей точки dockerfile
    • , Что временному контейнеру смонтируют анонимный объем как Вас или родительское изображение, указанное в Dockerfile
    • , анонимный объем будет инициализирован от содержания изображения
  • , Ваша команда будет работать в контейнере
    • при списке каталога во время этого RUN команда Вы будете видеть свои примененные изменения, но те изменения были применены к объему
  • , Когда Ваша команда выполнения завершится, докер получит изменения в контейнере
    • , Эти изменения видны с docker diff, если Вы не удаляете временные контейнеры (можно выполнить сборку с --rm=false, чтобы сделать, чтобы они остались)
    • , Эти изменения не будут включать анонимное содержание объема, потому что они не существуют во временной контейнерной файловой системе, объемы отдельные

из-за этого поведения, у Вас есть опции к:

  1. можно скопировать файлы в другой каталог и изменить полномочия там
  2. , можно закрепить полномочия на хосте, таким образом, они копируются в с теми полномочиями непосредственно
  3. , можно удалить объем или из изображения, заставить восходящее изображение удалять их определение объема, или можно восстановить собственную копию восходящего изображения без определения объема и основывать изображения прочь того

Примечание, что в текущих изображениях php, кажется, что объем был удален, что означает, что у нас эффективно есть опция 3.

1
ответ дан 20 November 2019 в 23:17

Теги

Похожие вопросы