我们在 Windows Server 2019 上运行 Docker Enterprise 18.09.8。我们的应用程序是使用 Express 构建的,并在 swarm 的 Docker 容器中作为服务运行。我们的图像需要很小,所以它们是在 Windows nano 上构建的,这意味着没有 Powershell。我们有一个我们正在使用的服务的 API 密钥,应该保密,因此我们计划使用 Docker 机密来使该 API 密钥可用于应用程序。
不幸的是,应用程序无法读取 Docker 机密。如果我使用:
docker exec -it 8528f64a022e cmd.exe
我可以看到有一些东西存在于:
C:\ProgramData\Docker\secrets\search_credentials
但我看不懂。如果我改用:
docker exec -it --user ContainerAdministrator 8528f64a022e cmd.exe
我可以输入文件的内容。
问题的核心似乎来自使用 Docker 机密管理敏感数据 - Windows 支持:
创建使用 Windows 容器的服务时,机密不支持指定 UID、GID 和模式的选项。目前,只有在容器内具有系统访问权限的管理员和用户才能访问机密。
如果不以提升的权限运行,我的应用程序是否无法访问机密内容?