您需要为秘密运行 swarm 模式,因为这就是 docker 实现秘密的方式。秘密的价值在于工作人员永远不会将秘密写入磁盘,秘密是在需要知道的基础上(其他工作人员在安排任务之前不会收到秘密),并且管理人员在磁盘上加密该秘密。管理器上的秘密存储使用 raft 数据库。
您可以使用命令轻松部署单节点 swarm 集群docker swarm init
。从那里,docker-compose up
更改为docker stack deploy -c docker-compose.yml $stack_name
.
swarm 模式下的 Secrets 和 configs 提供了将单个文件卷安装到容器中进行配置的替代方法。因此,如果在单个节点上没有 swarm 模式,您始终可以进行以下定义:
version: '2'
services:
app:
image: myapp:latest
volumes:
- ./secrets:/run/secrets:ro
或者,您可以通过将这些秘密加载到命名卷中,将这些秘密与您的应用程序稍微分开。为此,您可以执行以下操作:
tar -cC ./secrets . | docker run -i -v secrets:/secrets busybox tar -xC /secrets
然后挂载该命名卷:
version: '2'
volumes:
secrets:
external: true
services:
app:
image: myapp:latest
volumes:
- secrets:/run/secrets:ro