Docker:通过CLI使用--password是不安全的。使用--password-stdin

时间:2018-07-24 01:54:34

标签: docker continuous-integration dockerfile

在配置项过程中登录时出现此错误:

WARNING! Using --password via the CLI is insecure. Use --password-stdin.

我应该将“ --password”替换为“ --password-stdin'吗?

4 个答案:

答案 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

参考: Redirecting standard input\output in Windows PowerShell

相关问题