podman secret create - 创建新的密钥
语法
podman secret create [选项] 名称 文件|-
描述
使用标准输入或文件内容来创建一个新的密钥。
create
命令可以接受一个文件路径,或者 -
,这告诉 Podman 从标准输入中读取密钥内容。
密钥是一个敏感数据的块,容器在运行时需要这些数据,但这些数据不存储在镜像或源代码管理中,例如用户名和密码、TLS 证书和密钥、SSH 密钥或其他重要的通用字符串或二进制内容(大小最多为 500KB)。
密钥不会被 podman commit
提交到镜像中,也不会在 podman export
命令创建的归档中被提交。
密钥还可以用于存储 podman login
的密码,以便对容器注册表进行身份验证。
选项
--driver, -d=驱动
指定密钥的驱动(默认为 file)。
--driver-opts=key1=val1,key2=val2
指定驱动特定的选项。
--env=false
从环境变量中读取密钥数据。
--help
打印使用说明。
--label, -l=key=val1,key2=val2
给密钥添加标签。这些标签可以在 podman secret inspect
或 ls
中查看。
--replace=false
如果已存在具有相同名称的密钥,则更新该密钥。--replace
选项不会更改现有容器中的密钥,只更改新创建的容器。默认值为 false。
密钥驱动
file
密钥存储在只读的文件中。
pass
密钥存储在 GPG 加密的文件中。
shell
密钥由自定义脚本管理。环境变量 SECRET_ID 会传递给脚本(除了 list),并且密钥通过 stdin/stdout(在适用的情况下)进行通信。驱动选项 list、lookup、store 和 delete 用于安装脚本:
[secrets]
driver = "shell"
[secrets.opts]
list = 路径/到/list/脚本
lookup = 路径/到/lookup/脚本
store = 路径/到/store/脚本
delete = 路径/到/delete/脚本
在使用 shell 驱动时,你需要为每种操作提供一个脚本,这些脚本应该根据 SECRET_ID 环境变量和通过 stdin/stdout 传递的密钥数据来执行相应的操作。
请注意,shell 驱动是一个高级功能,通常只在需要自定义密钥管理逻辑时使用。对于大多数用例,file 或 pass 驱动可能更加适合和简单。
示例
从文件创建密钥
从文件 mysecret.txt
创建一个名为 mysecret
的密钥:
podman secret create mysecret mysecret.txt
从标准输入创建密钥
从标准输入创建一个名为 mysecret
的密钥:
cat mysecret.txt | podman secret create mysecret -
使用自定义标签创建密钥
使用标签 user=alice
创建一个名为 mysecret
的密钥:
podman secret create --label user=alice mysecret mysecret.txt
替换现有密钥
如果 mysecret
已经存在,并且你想用新的数据替换它:
podman secret create --replace mysecret newsecret.txt
在使用 Podman 和密钥时,请确保密钥文件或输入数据的安全,避免未授权的访问和泄露。
基于本地文件创建指定的密钥
echo -n mysecret > ./secret.txt
podman secret create my_secret ./secret.txt
在这个例子中,我们首先使用 echo
命令将 mysecret
写入 secret.txt
文件,并且使用 -n
选项来防止 echo
在输出后添加换行符。然后,我们使用 podman secret create
命令来创建一个名为 my_secret
的密钥,该密钥的内容来自 ./secret.txt
文件。
通过标准输入创建指定的密钥
printf <secret> | podman secret create my_secret -
在这个例子中,我们使用 printf
命令来输出 <secret>
(这里 <secret>
应该是你想要作为密钥内容的字符串),并将其通过管道传递给 podman secret create
命令。-
参数告诉 Podman 从标准输入中读取密钥的内容。
使用 pass 驱动基于本地文件创建 gpg 加密的密钥
podman secret create --driver=pass my_secret ./secret.txt.gpg
在这个例子中,我们使用 --driver=pass
选项来指定使用 pass 驱动,这样 Podman 会创建一个 gpg 加密的密钥。./secret.txt.gpg
是包含加密密钥的 gpg 文件。
从环境变量创建密钥
export MYSECRET=my_actual_secret
podman secret create --env=true my_secret MYSECRET
在这个例子中,我们首先将环境变量 MYSECRET
设置为 my_actual_secret
(这里 my_actual_secret
应该是你想要作为密钥内容的字符串)。然后,我们使用 --env=true
选项来告诉 Podman 从环境变量中读取密钥的内容,并将环境变量名 MYSECRET
作为参数传递给 podman secret create
命令。
另请参阅
podman(1), podman-secret(1), podman-login(1)
这些手册页提供了关于 Podman、Podman 密钥和 Podman 登录的更多信息和选项。
历史
- 2021年1月,由 Ashley Cui 最初编写。
- 2024年2月,由 Brett Calliss 添加了展示从环境变量创建密钥的示例。