docker-compose config : "mode" 不匹配容器内的权限
docker-compose config : "mode" does not match permission within the container
我对使用配置时 docker + compose(在集群环境中)的奇怪行为感到困惑。
基本上,我有这个设置:
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
我希望“模式”是结果容器中的准确结果...
因此我启动了堆栈(docker stack deploy...)...并注意到它不是:
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*
对我有帮助的一些资料:
- 容器内部的umask(前提是部分问题)是“0022”。
- 我已尝试将源文件 (./users.xml) 的权限从 444 更改为 666,最多为 777:这里没有更改
- 容器中的目录不存在,因此由配置设置创建。
- Docker 版本 19.03.6,内部版本 369ce74a3c
- docker-compose 版本 1.21.0,构建未知
- 我在 2 个不同的主机上尝试过,结果相同:Ubuntu 19.10 和 RHEL 7.4
- 容器以“root”身份运行,但我也尝试使用容器 运行 作为用户 10000,结果相同
doc 似乎没有回答这里的“为什么”(或者不是我理解的方式)。
这可能是显而易见的,但我可能需要在这里进行一些解释。有人吗?
实际上它工作正常,如果你在模式值中添加前导 0:
400 -> 0400
444 -> 0444
644 -> 0644
666 -> 0666
777 -> 0777
我更正了您 compose.yml 的模式并将其部署为堆栈“配置”。权限掩码符合预期:
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
但是请记住,配置和机密始终以只读方式挂载!
我对使用配置时 docker + compose(在集群环境中)的奇怪行为感到困惑。
基本上,我有这个设置:
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
我希望“模式”是结果容器中的准确结果... 因此我启动了堆栈(docker stack deploy...)...并注意到它不是:
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*
对我有帮助的一些资料:
- 容器内部的umask(前提是部分问题)是“0022”。
- 我已尝试将源文件 (./users.xml) 的权限从 444 更改为 666,最多为 777:这里没有更改
- 容器中的目录不存在,因此由配置设置创建。
- Docker 版本 19.03.6,内部版本 369ce74a3c
- docker-compose 版本 1.21.0,构建未知
- 我在 2 个不同的主机上尝试过,结果相同:Ubuntu 19.10 和 RHEL 7.4
- 容器以“root”身份运行,但我也尝试使用容器 运行 作为用户 10000,结果相同
doc 似乎没有回答这里的“为什么”(或者不是我理解的方式)。
这可能是显而易见的,但我可能需要在这里进行一些解释。有人吗?
实际上它工作正常,如果你在模式值中添加前导 0:
400 -> 0400
444 -> 0444
644 -> 0644
666 -> 0666
777 -> 0777
我更正了您 compose.yml 的模式并将其部署为堆栈“配置”。权限掩码符合预期:
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
但是请记住,配置和机密始终以只读方式挂载!