简介
在这个实验中,你将学习如何使用秘密(secrets)在 Docker 中安全地管理敏感数据。你将从创建一个 Docker 秘密来存储敏感信息开始。
创建完成后,你将通过列出现有的秘密来验证该秘密是否已成功添加到你的 Docker 环境中。最后,你将练习删除该秘密,并通过再次列出秘密来确认其已被删除。这个实践练习将指导你使用创建、列出和删除 Docker 秘密的基本命令。
在这个实验中,你将学习如何使用秘密(secrets)在 Docker 中安全地管理敏感数据。你将从创建一个 Docker 秘密来存储敏感信息开始。
创建完成后,你将通过列出现有的秘密来验证该秘密是否已成功添加到你的 Docker 环境中。最后,你将练习删除该秘密,并通过再次列出秘密来确认其已被删除。这个实践练习将指导你使用创建、列出和删除 Docker 秘密的基本命令。
在这一步中,你将学习如何在 Docker 中创建一个秘密。Docker 秘密用于管理容器在运行时所需的敏感数据,例如密码、SSH 密钥和其他凭证。与直接将敏感信息存储在容器镜像中或作为环境变量传递相比,使用秘密是一种更安全的处理方式。
在创建秘密之前,让我们确保你已经设置好了必要的 Docker 环境。LabEx 虚拟机已预先安装了 Docker。你可以通过运行以下命令来验证 Docker 版本:
docker version
你应该会看到类似以下的输出,表明 Docker 已安装并正在运行:
Client: Docker Engine - Community
Version: 20.10.21
API version: 1.41
Go version: go1.16.15
Git commit: baedd2a
Built: Tue Oct 25 17:58:10 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.16.15
Git commit: 363bd3a
Built: Tue Oct 25 17:56:32 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.8
GitCommit: 9cd335e8e55e68bf582ae4525b3a13ffa8a49392
Built: Tue Oct 25 17:54:39 2022
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
Built: Tue Oct 25 17:54:25 2022
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Built: Tue Oct 25 17:54:16 2022
要创建一个秘密,你可以使用 docker secret create
命令。该命令从标准输入或文件中读取敏感数据,并在 Docker 中创建一个秘密。
让我们创建一个名为 my_password
的简单秘密,其值为 s3cr3t
。我们将把秘密值通过管道传递给 docker secret create
命令。
echo "s3cr3t" | docker secret create my_password -
执行该命令后,Docker 将创建秘密并输出其 ID。输出将类似于以下内容:
<secret_id>
<secret_id>
是你刚刚创建的秘密的唯一标识符。请记住这一点,因为你在未来的操作中可能会用到它。
在这一步中,你将学习如何列出 Docker 中现有的秘密,以验证你在上一步中创建的秘密是否已成功添加。
要列出 Docker 管理的所有秘密,你可以使用 docker secret ls
命令。该命令会提供一个秘密列表,包括它们的 ID、名称和创建时间戳。
让我们运行该命令来查看秘密:
docker secret ls
输出应该会显示你在上一步中创建的 my_password
秘密,以及它的 ID 和创建时间。输出将类似于以下内容:
ID NAME CREATED UPDATED
<secret_id> my_password About a minute ago About a minute ago
你可以看到 my_password
秘密已列出,这证实了它已成功创建。<secret_id>
将与你创建秘密时输出的 ID 相匹配。
此命令对于管理你的秘密并确保它们在你的 Docker 环境中配置正确非常有用。
在这一步中,你将学习如何在 Docker 中删除一个秘密。当秘密不再需要时,删除它们对于安全和清理 Docker 环境非常重要。
要删除一个秘密,你可以使用 docker secret rm
命令,后面跟上秘密的名称或 ID。在前面的步骤中,我们创建了一个名为 my_password
的秘密。
让我们删除 my_password
秘密:
docker secret rm my_password
执行该命令后,Docker 将删除该秘密,并输出被删除的秘密的名称或 ID。输出将类似于以下内容:
my_password
这证实了 my_password
秘密已从你的 Docker 环境中成功删除。
当秘密不再使用时将其删除是一个好习惯,这样可以最大程度地降低敏感信息被未经授权访问的风险。
在这一步中,你将再次列出 Docker 秘密,以验证你在上一步中删除的 my_password
秘密已不再存在。
要列出所有秘密,请使用 docker secret ls
命令:
docker secret ls
这次,输出中应该不包含 my_password
秘密。如果你的环境中没有其他秘密,输出可能如下所示:
ID NAME CREATED UPDATED
如果有其他秘密,你会看到它们被列出,但 my_password
应该不在其中。这证实了删除操作已成功。
在删除秘密后列出它们是确保敏感数据不再存储在你的 Docker 环境中的一个好方法。
在这个实验中,你学习了如何使用秘密(secrets)在 Docker 中安全地管理敏感数据。你首先验证了你的 Docker 环境,然后使用 docker secret create
命令创建了一个名为 my_password
的秘密,通过标准输入管道传入秘密值。
创建秘密后,你使用 docker secret ls
命令列出现有的秘密,确认 my_password
已成功创建。最后,你练习使用 docker secret rm
命令删除该秘密,并通过再次列出秘密来验证其已被删除,展示了 Docker 秘密的完整生命周期。