在配置项过程中登录时出现此错误:
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
我应该将“ --password”替换为“ --password-stdin'吗?
答案 0 :(得分:27)
根据docker文档:
要以非交互方式运行docker login命令,可以设置
--password-stdin
标志可通过STDIN提供密码。使用 STDIN防止密码出现在外壳程序的历史记录中,或者 日志文件。
以下示例从文件读取密码,并使用STDIN将其传递给docker login命令:
$ cat ~/my_password.txt | docker login --username foo --password-stdin
或
$ docker login --username foo --password-stdin < ~/my_password
以下示例从变量读取密码,然后使用STDIN将其传递给docker login命令:
$ echo "$MY_PASSWORD" | docker login --username foo --password-stdin
答案 1 :(得分:3)
在基于Windows的系统上(或在基于 vs2017-win2016 的Azure Pipelines任务中运行时)相同的echo
命令也会输出额外的换行符。
使用set /p
的解决方法,另请参见question + answer。
完整命令如下:
echo | set /p="my_password" | docker login --username foo --password-stdin
答案 2 :(得分:0)
这是一个通常使用AWS的警告。在这种情况下,该问题的另一种解决方案可能是不显式运行该命令,以便将其存储在历史记录中。为此,可以使用(与aws2一起使用)
eval $(aws2 ecr get-login --no-include-email)
即使您仍然会看到警告,但是包含密钥/密码的显式docker命令也不会存储在bash历史记录中。如果不敢相信,请尝试运行history
命令,亲自看看。
答案 3 :(得分:0)
使用 powershell 的 Windows 10 解决方案:
使用记事本创建一个包含密码的单行文本文件。该文件被命名为“password1.txt”,以便下面的命令行工作。
将此文件保存在您在 powershell 中使用的文件夹中(...通常是 C:\Users\Your_Username )。
Get-Content password1.txt | docker login --username my_username --password-stdin