You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Secrets挂载文件时mode/uid/gid不生效问题排查

问题原因及解决方案

Docker Secrets的uid/gid/mode配置仅在Swarm集群模式下生效,你当前使用普通单机docker compose up部署时,这些参数会被Docker忽略——这不是Bug,是对文档场景的理解偏差。

文档示例的隐含前提

你参考的文档示例中,Redis服务包含deploy: replicas: 1配置,这是Swarm模式专属的部署语法,说明示例针对的是Swarm环境,而非单机Compose环境。

解决方法

方法1:切换到Swarm模式部署

  1. 初始化Swarm(单机节点也可运行):
docker swarm init
  1. 使用Swarm栈部署配置:
docker stack deploy -c docker-compose.yml secret-test-stack
  1. 查看容器内文件权限:
docker exec -it $(docker ps -q -f name=secret-test-stack_test) ls -alh /root

此时uid/gid/mode会按配置生效。

方法2:单机环境下手动修改权限

如果不想启用Swarm,可在容器启动命令中添加权限修改步骤,修改后的docker-compose.yml如下:

version: "3.9"
services:
  test:
    image: busybox:latest
    secrets:
      - source: secret_file
        target: /root/mysecretfile
    command: sh -c "chown 101:101 /root/mysecretfile && chmod 0400 /root/mysecretfile && ls -alh /root"

secrets:
  secret_file:
    file: ./docker-compose.yml

运行docker compose up即可看到权限已变更。

补充说明

你的Docker版本(20.10.17)符合这个规则,目前Docker单机Compose仍不支持Secrets的权限/所有者配置,仅Swarm模式支持该特性。

内容的提问来源于stack exchange,提问作者DevilaN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:04:07