Dockerfile: chmod в корневом каталоге не работает - PullRequest
0 голосов
/ 19 марта 2019

Я создаю образ докера на основе следующего Dockerfile в Ubuntu:

FROM openjdk:8-jre-alpine

USER root
RUN echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX && ls -ald /
RUN chmod 777 /
RUN echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX && ls -ald /

ENTRYPOINT [ "sh", "-c", "echo test" ]

Я ожидаю, что корневой путь получает установленные разрешения, но при построении образа докера выводятся следующие данные (рассмотрим вывод ls -ald /):

docker build  . -f Dockerfile 

Sending build context to Docker daemon  2.048kB
Step 1/6 : FROM openjdk:8-jre-alpine
 ---> b76bbdb2809f
Step 2/6 : USER root
 ---> Using cache
 ---> 18045a1e2d82
Step 3/6 : RUN echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX && ls -ald /
 ---> Running in 2309a8753729
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
drwxr-xr-x    1 root     root          4096 Mar 19 13:50 /
Removing intermediate container 2309a8753729
 ---> 809221ec8f71
Step 4/6 : RUN chmod 777 /
 ---> Running in 81df09ec266c
Removing intermediate container 81df09ec266c
 ---> 9ea5e2282356
Step 5/6 : RUN echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX && ls -ald /
 ---> Running in ef91613577da
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
drwxr-xr-x    1 root     root          4096 Mar 19 13:50 /
Removing intermediate container ef91613577da
 ---> cd7914160661
Step 6/6 : ENTRYPOINT [ "sh", "-c", "echo test" ]
 ---> Running in 3d724aca37fe
Removing intermediate container 3d724aca37fe
 ---> 143e46ec55a8
Successfully built 143e46ec55a8

Как я могу определить разрешения?

ОБНОВЛЕНИЕ: У меня есть конкретные причины, по которым я временно вынужден установить эти разрешения для корневой папки: К сожалению, я запускаю определенное приложение в контейнере с другим пользователем, отличным от root, и это приложение записывает что-то прямо в /. В настоящее время это не настраивается.

Если я делаю это в другой папке под root, он работает как положено:

...
Step 6/8 : RUN mkdir -p /mytest && chmod 777 /mytest
 ---> Running in 7aa3c7b288fd
Removing intermediate container 7aa3c7b288fd
 ---> 1717229e5ac0
Step 7/8 : RUN echo ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ && ls -ald /mytest
 ---> Running in 2238987e1dd6
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
drwxrwxrwx    2 root     root          4096 Mar 19 14:42 /mytest
...

По исполнению контейнера:

drwxrwxrwx    2 root     root          4096 Mar 19 14:42 mytest

1 Ответ

0 голосов
/ 19 марта 2019

Чтобы проверить разрешение вашей корневой папки bash внутри вашего контейнера, выполните следующие действия

  • docker exec -it container_id bash
  • cd /
  • ls -ald
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...