学习优先级:★★★★★

易用性:★★★☆☆

环境变量(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 密钥和其他敏感信息。