如何在Docker容器中设置附加卷的权限?
我正在尝试通过NFS卷使用。我使用Ansible进行部署,因此我将发布Ansible配置,但我使用Docker的CLI命令执行了相同的配置,在这种情况下也会出现问题 当我部署容器并查看容器如何在Docker容器中设置附加卷的权限?,docker,promise,ansible,Docker,Promise,Ansible,我正在尝试通过NFS卷使用。我使用Ansible进行部署,因此我将发布Ansible配置,但我使用Docker的CLI命令执行了相同的配置,在这种情况下也会出现问题 当我部署容器并查看容器docker日志时,我看到/etc/prometheus被适当地共享并连接到容器。但是,/prometheus(容器存储相关数据库和度量的地方)拒绝授予权限 根据/prometheus被要求对任何人进行chown。启动时,容器内似乎不会发生这种情况 以下是我的Ansible角色创建的卷: - name: &
docker日志
时,我看到/etc/prometheus
被适当地共享并连接到容器。但是,/prometheus
(容器存储相关数据库和度量的地方)拒绝授予权限
根据/prometheus被要求对任何人进行chown
。启动时,容器内似乎不会发生这种情况
以下是我的Ansible角色创建的卷:
- name: "Creates named docker volume"
docker_volume:
volume_name: prometheus_persist
state: present
driver_options:
type: nfs
o: "addr={{ nfs_server }},rw,nolock"
device: ":{{ prometheus_nfs_path }}"
这相当于此Docker CLI命令:
docker volume create -d local -o type=nfs -o o=addr={{ nfs_server }},rw -o device=:{{ prometheus_nfs_path }} prometheus_persist
docker run -v prometheus_persist:/prometheus -v "{{ prometheus_config_path }}:/etc/prometheus" -p 9090:9090 --name prometheus prom/prometheus
这是我的容器部署节
- name: "Deploy prometheus container"
docker_container:
name: prometheus
# hostname: prometheus
image: prom/prometheus
restart_policy: always
state: started
ports: 9090:9090
user: ansible:docker
volumes:
- "{{ prometheus_config_path }}:/etc/prometheus"
mounts:
- source: prometheus_persist
target: /prometheus
read_only: no
type: volume
comparisons:
env: strict
这相当于此Docker CLI命令:
docker volume create -d local -o type=nfs -o o=addr={{ nfs_server }},rw -o device=:{{ prometheus_nfs_path }} prometheus_persist
docker run -v prometheus_persist:/prometheus -v "{{ prometheus_config_path }}:/etc/prometheus" -p 9090:9090 --name prometheus prom/prometheus
同样,部署时的容器日志表明
/prometheus
上的权限被拒绝。我已经在一个通用的Ubuntu容器上安装了prometheus_persist
命名卷进行了测试,它安装得很好,我可以触摸其中的文件。有关于如何解决这个问题的建议吗?这原来是NFS挤压的问题。在我的例子中,NFS导出器是一个旧的Synology,它不允许设置no\u root\u squash
。但是,将NFS共享上的所有用户映射到管理员解决了该问题