如何删除 docker 服务中的秘密?

How to delete secret inside a docker service?

所以我尝试使用 "docker secret" 来保密。该命令应该如下所示。

printf "Yes" | docker secret create sec -

然后我尝试使用 redis 图片提供服务。

docker service  create --name redis --secret sec redis:alpine

当我尝试访问 redis 服务并查看秘密时,它就像魅力一样工作 docker。

docker container exec $(docker ps --filter name=redis -q) cat /run/secrets/sec

但问题是,我试图在不删除服务的情况下从 redis 中删除密钥。我就像下面的命令一样。

docker container exec $(docker ps --filter name=redis -q) rm -rf /run/secrets/sec
rm: can't remove '/run/secrets/sec': Resource busy

所以我尝试使用停止命令停止服务。

docker container stop $(sudo docker ps --filter name=redis -q)
docker container exec $(sudo docker ps --filter name=redis -q) rm /run/secrets/sec
rm: can't remove '/run/secrets/my_secret_data': Resource busy

但它没有停止服务,我试图通过 docker service [COMMAND] 停止服务,但我找不到任何 docker 服务停止。

我也曾尝试使用 docker secret rm 删除 docker 秘密,但出现此错误。

Error response from daemon: rpc error: code = InvalidArgument desc = secret 'sec' is in use by the following service: redis

如何在不删除 docker 服务的情况下删除 docker 机密?

要停止该服务,您必须 "rm" 它。因此,命令是 docker service rm.
您不能只 "stop" 服务。
但是您可以更新它,使用“docker service update --secret-rm ...

一旦它不再与服务链接,您将能够"rm"来自群的秘密。