如何在Docker容器中设置附加卷的权限?

如何在Docker容器中设置附加卷的权限?,docker,promise,ansible,Docker,Promise,Ansible,我正在尝试通过NFS卷使用。我使用Ansible进行部署,因此我将发布Ansible配置,但我使用Docker的CLI命令执行了相同的配置,在这种情况下也会出现问题 当我部署容器并查看容器docker日志时,我看到/etc/prometheus被适当地共享并连接到容器。但是,/prometheus(容器存储相关数据库和度量的地方)拒绝授予权限 根据/prometheus被要求对任何人进行chown。启动时,容器内似乎不会发生这种情况 以下是我的Ansible角色创建的卷: - name: &

我正在尝试通过NFS卷使用。我使用Ansible进行部署,因此我将发布Ansible配置,但我使用Docker的CLI命令执行了相同的配置,在这种情况下也会出现问题

当我部署容器并查看容器
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共享上的所有用户映射到管理员解决了该问题