我有一个在Docker容器内运行的应用程序,它不断被推送到Azure容器注册表。作为管道的一部分,我使用步骤:
docker login <Docker Server> -u <Username> -p <Password>
当管道运行这一步时,我得到以下警告:
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
我应该做些什么吗?你有什么建议的解决方案吗?
使用Docker login命令登录私有镜像注册表后,系统会提示密码未加密。
默认情况下,Docker将未加密的登录密码存储在/root/. Docker/config文件中。Docker配置文件。这是Docker的默认行为。
解决问题
你可以将用户凭证存储在外部凭证存储库中,而不是存储在Docker配置文件中。将凭据存储在凭据存储库中比将凭据存储在Docker配置文件中更安全。查看更多信息。
根据docker文档:
要以非交互方式运行docker login命令,可以设置——password- STDIN标志,通过STDIN提供密码。使用STDIN可以防止密码出现在shell的历史记录或日志文件中。
以下示例从文件中读取密码,并使用STDIN将其传递给docker login命令:$ cat ~/my_password.txt | docker login --username foo --password-stdin
或
$ docker login --username foo --password-stdin < ~/my_password.
下面的示例从变量中读取密码,并使用STDIN将其传递给docker登录命令:
$ echo "$MY_PASSWORD" | docker login --username foo --password-stdin
参考:Docker:通过CLI使用——password是不安全的。使用——password-stdin
https://www.ibm.com/docs/en/cloud-private/3.2.0?topic=login-docker-results-in-unencrypted-password-warning