Docker Secrets 的使用
Docker命令行工具提供了docker secret
命令来管理敏感信息
docker secret
只能从Docker Swarm模式的manager节点调用,如果在本机进行试验,请先执行Note: Docker secrets are only available to swarm services, not to standalone containers. To use this feature, consider adapting your container to run as a service. Stateful containers can typically run with a scale of 1 without changing the container code.
1 docker swarm init
1 | root@debian:~# docker secret --help |
创建
从标准输入创建
创建secret
1 | echo "123456" | docker secret create db_password - |
查看secret
1 | docker secret ls |
从文件创建
一旦密钥创建成功,Docker会将其存储在Swarm管理的安全存储中,并且不再需要原始密钥文件。
1 | echo "root" > mysql_pwd |
创建secret
1 | docker secret create root_password mysql_pwd |
查看secret详细信息
1 | docker secret inspect root_password |
使用
容器中的使用
创建一个【db】服务并引用所创建的secret作为数据库用户名和root密码
1 | docker service create --name db \ |
检查服务的状态
1 | docker service ls |
进入容器查看挂载到/run/secrets/目录下的secret文件
1 | root@debian:~# docker ps |
docker-compose 中的使用
Docker Compose,缺点是不能在分布式多机器上使用;
Docker swarm,缺点是不能同时编排多个服务;
所以才有了Docker Stack,可以在分布式多机器上同时编排多个服务。
1 | root@debian:~# docker stack --help |
比如说启动一个redis
1 | version: '3.7' |
在 Docker Swarm 中创建 “redis_password” 密钥
1 | echo "root" > redis_password |
启动
1 | docker-compose up |
docker stack 启动
1 | docker stack deploy redis_server -c docker-compose.yml |
停止
当使用 docker stop
命令停止容器时,它只停止容器实例,但不会删除相关的 Docker Swarm 服务。 Docker Swarm 服务定义包含了容器部署的规则,包括要启动多少个容器实例、使用的镜像、环境变量等。
1 | docker service ls |
清洁
删除所有处于停止状态并且不再使用的容器
1 | docker container prune |