Конфигурация docker-compose: «режим» не соответствует разрешению в контейнере

Я озадачен странным поведением docker + compose (в среде роя) при использовании config.

В общем, у меня такая установка:

version: '3.6'

configs:
   users777.xml:
     file: "./users.xml"
   users666.xml:
     file: "./users.xml"
   users644.xml:
     file: "./users.xml"
   users444.xml:
     file: "./users.xml"
   users400.xml:
     file: "./users.xml"


services:
   ubuntu:
     image: ubuntu:18.04
     configs:
     - source: users777.xml
       target: /app/geoserver/data/security/usergroup/default/users777.xml
       uid: '10000'
       gid: '10000'
       mode: 777
     - source: users666.xml
       target: /app/geoserver/data/security/usergroup/default/users666.xml
       uid: '10000'
       gid: '10000'
       mode: 666
     - source: users644.xml
       target: /app/geoserver/data/security/usergroup/default/users644.xml
       uid: '10000'
       gid: '10000'
       mode: 644
     - source: users444.xml
       target: /app/geoserver/data/security/usergroup/default/users444.xml
       uid: '10000'
       gid: '10000'
       mode: 444
     - source: users400.xml
       target: /app/geoserver/data/security/usergroup/default/users400.xml
       uid: '10000'
       gid: '10000'
       mode: 400
     command: tail -F anything

Я ожидал, что "режим" будет точным результатом в результирующем контейнере... Таким образом, я запустил стек (развертывание стека докеров...)... и заметил, что это не так:

root@2af60b451971:/app/geoserver/data/security/usergroup/default# ll
total 28
-rw--w---- 1 10000 10000  285 Dec 18 15:26 users400.xml
-rw-rwxr-- 1 10000 10000  285 Dec 18 15:26 users444.xml*
--w----r-- 1 10000 10000  285 Dec 18 15:26 users644.xml
--w--wx-w- 1 10000 10000  285 Dec 18 15:26 users666.xml*
-r----x--x 1 10000 10000  285 Dec 18 15:26 users777.xml*

Некоторые фрагменты информации, которые мне помогают:

  • Маска (при условии, что это часть задачи) внутри контейнера — «0022».
  • Я пытался изменить права исходного файла (./users.xml) с 444 на 666, вплоть до 777: здесь никаких изменений
  • каталог внутри контейнера не существует и, таким образом, создается при настройке конфигурации.
  • Докер версии 19.03.6, сборка 369ce74a3c
  • docker-compose версии 1.21.0, сборка неизвестна
  • Я пробовал это на двух разных хостах с тем же результатом: Ubuntu 19.10 и RHEL 7.4.
  • контейнер работает как «root», но я также пробовал с контейнером, работающим как пользователь 10000, с тем же результатом.

Документ, похоже, не отвечает здесь на вопрос «почему» (или не так, как я понимаю).

Это может быть очевидно, но здесь мне может понадобиться некоторое объяснение. Любой?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
358
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На самом деле это работает правильно, если вы добавите начальный 0 к значениям режима:

400 -> 0400
444 -> 0444
644 -> 0644
666 -> 0666
777 -> 0777

Я исправил режимы вашего compose.yml и развернул его как стек «config». Маска разрешения, как и ожидалось:

me:~$ docker exec -ti $(docker ps -q --filter name=config_ubuntu) ls -l /app/geoserver/data/security/usergroup/default
total 20
-r-------- 1 10000 10000 5 Dec 19 21:06 users400.xml
-r--r--r-- 1 10000 10000 5 Dec 19 21:06 users444.xml
-rw-r--r-- 1 10000 10000 5 Dec 19 21:06 users644.xml
-rw-rw-rw- 1 10000 10000 5 Dec 19 21:06 users666.xml
-rwxrwxrwx 1 10000 10000 5 Dec 19 21:06 users777.xml

Но не забывайте, что конфиги и секреты всегда монтируются только для чтения!

Это было так очевидно! Большое спасибо за указание на мое недоразумение: вы спасли мою неделю!

Marvin 20.12.2020 20:29

Другие вопросы по теме