学习优先级:★★★★★
易用性:★★★☆☆
环境变量(environment)常被用来在 Docker 容器中存储密码和密钥。然而,这种方法存在安全隐患,因为这些变量容易被读取。更安全的方法是使用 Docker Secrets,它专门用于安全存储敏感数据。
以下是一个示例,展示了如何创建 Docker Secret 并在容器中使用它。
示例代码
创建 Secret
echo "supergeheimes-passwort" | docker secret create db_password -
Docker Compose 示例:使用 Secrets
version: '3.7'
services:
db:
image: postgres:latest
secrets:
- db_password
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
secrets:
db_password:
external: true
执行结果
运行此代码后,将启动一个 PostgreSQL 容器,该容器通过 Docker Secret 安全地获取密码。
Docker Secrets 是专门加密的,并存储在单独的存储结构中,因此不容易被访问。与环境变量不同,Secrets 不会以明文形式显示,即使容器受到攻击,Secrets 也保持安全。
补充说明
使用 Docker Secrets 需要 Docker Compose 版本 3.1 或更高。Secrets 不仅可以用于密码,还可以用于 API 密钥和其他敏感信息。