加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

您如何使用docker-compose v3.1管理秘密值?

发布时间:2020-12-16 03:32:45 所属栏目:安全 来源:网络整理
导读:docker-compose.yml规范版本3.1引入了对secrets的支持. 我试过这个: version: '3.1'services: a: image: tutum/hello-world secret: password: the_password b: image: tutum/hello-world $docker-compose up返回: services.secret的不支持的配置选项:pas

docker-compose.yml规范版本3.1引入了对secrets的支持.

我试过这个:

version: '3.1'

services:
  a: 
    image: tutum/hello-world
  secret: 
    password: the_password
  b:
    image: tutum/hello-world

$docker-compose up返回:

services.secret的不支持的配置选项:’password’

我们如何在实践中使用秘密功能?

最佳答案
你可以阅读corresponding section from the official documentation.

要使用秘密,您需要在docker-compose.yml文件中添加两件事.首先,定义所有秘密的顶级秘密:块.然后,另一个秘密:在每个服务下阻止服务应该接收的秘密.

例如,创建Docker将会理解的两种类型的秘密:外部秘密和文件秘密.

1.使用docker secret创建一个“外部”秘密

第一件事:使用Docker的秘密,你所在的节点必须是群集的一部分.

$docker swarm init

接下来,创建一个“外部”秘密:

$echo "This is an external secret" | docker secret create my_external_secret -

(确保包括最后的破折号,– 很容易错过.)

将另一个秘密写入文件

$echo "This is a file secret." > my_file_secret.txt

3.创建一个使用这两个密码的docker-compose.yml文件

现在创建了两种类型的秘密,这里是docker-compose.yml文件,它们将会读取这两个文件,并将它们写入Web服务:

version: '3.1'

services:
  web:
    image: nginxdemos/hello
    secrets:                    # secrets block only for 'web' service
     - my_external_secret
     - my_file_secret

secrets:                        # top level secrets block
  my_external_secret:
    external: true
  my_file_secret:
    file: my_file_secret.txt

Docker可以从其自己的数据库(例如使用docker secret创建的秘密)或从文件读取秘密.上面显示了两个例子.

4.部署测试堆栈

使用以下方式部署堆栈:

$docker stack deploy --compose-file=docker-compose.yml secret_test

这将创建名为secret_test_web的Web服务的一个实例.

5.验证由服务创建的容器是否具有两个秘密

使用docker exec -ti [container] / bin / sh来验证密码是否存在.

(注意:在下面的docker exec命令中,m2jgac …部分将在您的机器上不同.运行docker ps找到您的容器名称.)

$docker exec -ti secret_test_web.1.m2jgacogzsiaqhgq1z0yrwekd /bin/sh

# Now inside secret_test_web; secrets are contained in /run/secrets/
root@secret_test_web:~$cd /run/secrets/

root@secret_test_web:/run/secrets$ls
my_external_secret  my_file_secret

root@secret_test_web:/run/secrets$cat my_external_secret
This is an external secret

root@secret_test_web:/run/secrets$cat my_file_secret
This is a file secret.

如果一切顺利,我们在步骤1和2中创建的两个秘密应该在我们部署堆栈时创建的Web容器中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读