Docker swarm 管理 secrets

简介: Docker swarm 管理 secrets

Docker swarm 管理 secrets

文章目录

1. 初始化 swarm

默认情况下,Docker作为一个隔离的单节点工作。所有容器仅部署在引擎上。群模式将它变成了一个多主机集群感知引擎。为了使用秘密功能,Docker必须处于“群模式”。这是通过

$ docker swarm init
Swarm initialized: current node (o6ngy0xskvvhxaaiyfye21znh) is now a manager.
To add a worker to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-4oa8jjlavmoihusp73vgu71mhjek6ut1qkapzqnhtxdq5xzv0t-04anuyasgyv0p4xiqn4ga16fe 172.17.0.9:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

2. 创建 secrets

下面的命令将首先创建一个随机的64个字符的令牌,该令牌将存储在一个文件中以供测试之用。令牌文件用于创建名为deep_thought_answer_secure的秘密文件

$ < /dev/urandom tr -dc A-Za-z0-9 | head -c64 > tokenfile
$ docker secret create deep_thought_answer_secure tokenfile
5yk3llezwli4atuua81dw6hg5

例如,还可以使用stdin创建秘密

$ echo "the_answer_is_42" | docker secret create lesssecure -
sxzk4itvh9dwvcenfz037uwab

注意,这种方法将在用户bash历史文件中保留the_answer_is_42的值。

所有的秘密名称都可以使用

$ docker secret ls
ID                          NAME                         DRIVER              CREATED              UPDATED
5yk3llezwli4atuua81dw6hg5   deep_thought_answer_secure                       About a minute ago   About a minute ago
sxzk4itvh9dwvcenfz037uwab   lesssecure                                       53 seconds ago       53 seconds ago

这将不会暴露底层的secrets的values,这个秘密可以在通过Swarm部署服务时使用。例如,deploy让Redis服务可以访问这个秘密。

$ docker service create --name="redis" --secret="deep_thought_answer_secure" redis
llfxs9rk9e88n7jh99q971uwb
overall progress: 1 out of 1 tasks 
1/1: running   [==================================================>] 
verify: Service converged 

secret作为一个文件出现在secrets目录中。

$ docker exec $(docker ps --filter name=redis -q) ls -l /run/secrets
ls: cannot access '/run/secrets': Operation not permitted

这可以作为一个普通文件从磁盘读取。

$ docker exec $(docker ps --filter name=redis -q) cat /run/secrets/deep_thought_answer_secure
SbrptUbQhcF7oWdfhmlSn70XCDvCNH2REuYSRv55tgUPEjPjKvB1zeLDTZTTcAxf$ 

3. 用Compose创建Docker stack

使用Docker Compose Stacks也可以使用secrets功能。在下面的例子中,观众服务可以访问我们的Swarm Secret _deep_thoughtanswer。它被安装并被称为deep_thoughtanswer

version: '3.1'
services:
    viewer:
        image: 'alpine'
        command: 'cat /run/secrets/deep_thought_answer_secure'
        secrets:
            - deep_thought_answer_secure
secrets:
    deep_thought_answer_secure:
        external: true

4. 部署访问 secrets

Docker Compose Stack的部署使用Docker CLI。作为部署的一部分,堆栈将配置为对秘密的访问。使用以下命令部署任务:

docker stack deploy -c docker-compose.yml secrets1
docker logs $(docker ps -aqn1 -f status=exited)

如果命令错误与“docker日志”需要精确的1个参数。这意味着容器还没有启动并返回秘密。

5. File Based Secret

另一种创建秘密的方法是通过文件。既然如此,我们有个秘密。需要从容器中访问的CRT文件。

echo "my-super-secure-cert" > secret.crt

更新docker-compose Stack以使用基于机密的文件

version: '3.1'
services:
    test:
        image: 'alpine'
        command: 'cat /run/secrets/secretcert'
        secrets:
            - secretcert
secrets:
    secretcert:
        file: ./secret.crt

6. 使用Compose部署和访问secrets

和前面一样,部署Docker Compose stack

docker stack deploy -c docker-compose.yml secrets2

下面的命令将获取为新创建的服务退出的最后一个容器的日志文件

docker logs $(docker ps -aqn1 -f name=secrets2 -f status=exited)

参考:



相关文章
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
935 79
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
797 161
|
Prometheus 监控 Cloud Native
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
951 163
|
调度 开发者 Docker
Docker Swarm
Docker Swarm 为容器化应用的部署和管理提供了一种高效、可靠的方式,使开发者能够更轻松地构建和运行分布式应用。随着容器技术的不断发展,Docker Swarm 在企业级应用中的应用也将越来越广泛。
577 162
|
监控 Docker 容器
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
423 12
|
Kubernetes 负载均衡 调度
Docker Swarm 核心概念及详细使用
Docker Swarm 是 Docker 的原生集群管理工具,用于将多个 Docker 主机整合成一个虚拟主机,提供集群管理和调度功能。其核心特点包括集群管理、容错与高可用性、负载均衡、声明式服务模型、服务发现和安全性。本文档详细介绍了 Docker Swarm 的安装配置、服务部署、节点管理、网络配置及故障模拟等关键操作,适用于中小型项目或对 Kubernetes 复杂性有所顾虑的用户。
1419 6
|
应用服务中间件 nginx Docker
Docker Swarm、Docker Stack和Portainer的使用
Docker Swarm、Docker Stack 和 Portainer 各有其独特的功能和优势。Docker Swarm 适用于分布式服务的管理和编排,Docker Stack 便于多容器应用的定义和部署,而 Portainer 提供了直观的 UI,简化了 Docker 环境的管理。结合使用这些工具,可以大大提高容器化应用的部署和管理效率。希望本文对您理解和应用这些工具有所帮助。
996 5
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。
248 0
|
调度 Docker 容器
【赵渝强老师】Docker Swarm集群的体系架构
Docker Swarm自1.12.0版本起集成至Docker引擎,无需单独安装。它内置服务发现功能,支持跨多服务器或宿主机创建容器,形成集群提供服务。相比之下,Docker Compose仅限于单个宿主机。Docker Swarm采用主从架构,Swarm Manager负责管理和调度集群中的容器资源,用户通过其接口发送指令,Swarm Node根据指令创建容器运行应用。
393 0
|
负载均衡 安全 调度
深入调查研究Docker Swarm
【10月更文挑战第19天】
413 0