如何使用 docker secret create 命令管理敏感数据

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何使用 docker secret create 命令在 Docker 环境中有效管理敏感数据。你将探索创建机密(secret)的不同方法,包括从标准输入(STDIN)和文件中读取数据。

本实验将引导你完成使用特定名称和不同来源创建机密的过程。你还将学习如何为机密添加标签以实现更好的组织,以及如何检查已创建机密的详细信息,以验证其内容和配置。通过这个实践经验,你将掌握在使用 Docker Swarm 部署应用程序时保护敏感信息所需的基本技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/inspect -.-> lab-555220{{"如何使用 docker secret create 命令管理敏感数据"}} docker/create -.-> lab-555220{{"如何使用 docker secret create 命令管理敏感数据"}} end

从标准输入(STDIN)创建机密

在这一步中,你将学习如何通过从标准输入(STDIN)读取数据来创建 Docker 机密。这对于在不将敏感信息直接存储在主机系统文件中的情况下,将其提供给容器非常有用。

首先,让我们创建一个包含密码的简单机密。我们将使用 echo 命令输出密码,并将其通过管道传递给 docker secret create 命令。

echo "mysecretpassword" | docker secret create my_password_secret -

在这个命令中:

  • echo "mysecretpassword" 将字符串 "mysecretpassword" 输出到标准输出。
  • | 是管道运算符,它将 echo 命令的输出作为输入传递给下一个命令。
  • docker secret create 是用于创建新 Docker 机密的命令。
  • my_password_secret 是我们为这个机密指定的名称。
  • - 告诉 docker secret create 从标准输入读取机密数据。

你应该会看到新创建的机密的 ID 作为输出。

从文件创建机密

在这一步中,你将学习如何根据文件内容创建 Docker 机密。这是管理 API 密钥、证书或配置文件等机密信息的常用方法。

首先,让我们创建一个包含一些敏感数据的简单文件。我们将在你的主目录(~/project)下创建一个名为 api_key.txt 的文件。

echo "my_super_secret_api_key_12345" > ~/project/api_key.txt

此命令使用 echo 将字符串 "my_super_secret_api_key_12345" 写入文件 ~/project/api_key.txt

现在,我们将使用该文件的内容创建一个 Docker 机密。

docker secret create my_api_key_secret ~/project/api_key.txt

在这个命令中:

  • docker secret create 是用于创建新 Docker 机密的命令。
  • my_api_key_secret 是我们为这个机密指定的名称。
  • ~/project/api_key.txt 是包含机密数据的文件的路径。Docker 将读取该文件的内容并将其存储为机密。

你应该会看到新创建的机密的 ID 作为输出。

创建带有标签的机密

在这一步中,你将学习如何在创建 Docker 机密时为其添加标签。标签是可以附加到 Docker 对象上的键值对,用于帮助组织和识别这些对象。这在大规模部署中特别有用。

我们将再次从标准输入(STDIN)创建一个机密,但这次会为其添加标签。

echo "anothersecretvalue" | docker secret create --label env=production --label app=webserver my_labeled_secret -

在这个命令中:

  • echo "anothersecretvalue" 通过标准输入提供机密数据。
  • docker secret create 是用于创建机密的命令。
  • --label env=production 添加一个键为 env、值为 production 的标签。
  • --label app=webserver 添加另一个键为 app、值为 webserver 的标签。你可以通过重复使用 --label 标志来添加多个标签。
  • my_labeled_secret 是机密的名称。
  • - 表示应从标准输入读取机密数据。

你应该会看到新创建的机密的 ID 作为输出。添加标签有助于你对机密进行分类,使后续的管理和筛选更加容易。

查看已创建的机密

在这一步中,你将学习如何使用 docker secret inspect 命令查看 Docker 机密的详细信息。该命令会提供有关机密的详细信息,包括其 ID、名称、创建时间以及与之关联的任何标签。

让我们查看上一步中创建的机密 my_labeled_secret

docker secret inspect my_labeled_secret

此命令将输出一个包含 my_labeled_secret 详细信息的 JSON 对象。你应该会看到诸如机密的 ID、名称(my_labeled_secret)、创建时间以及我们添加的标签(env=productionapp=webserver)等信息。

请注意,出于安全原因,在查看机密时不会显示实际的机密数据。

你还可以查看我们创建的其他机密:

docker secret inspect my_password_secret
docker secret inspect my_api_key_secret

查看机密是验证其是否存在、检查其配置以及确认标签是否正确应用的有效方法。

总结

在本次实验中,你学习了如何使用 docker secret create 命令在 Docker 中有效管理敏感数据。你练习了直接从标准输入(STDIN)读取数据来创建机密,这有助于避免将敏感信息存储在主机的文件中。你还学习了如何从文件内容创建机密,这是管理各种类型敏感数据(如 API 密钥或证书)的常用方法。

此外,你探索了如何在创建机密时添加标签来加强机密管理,从而更好地组织和识别机密。最后,你学习了如何查看已创建机密的详细信息,以验证其配置和内容(尽管在总结中未提供完整的查看步骤细节)。这些技术为你在 Docker 环境中处理敏感信息提供了安全的方法。