如何创建一个秘密的码头工人的秘密?

时间:2020-07-05 06:15:49

标签: bash docker docker-secrets

我需要创建一个MariaDB docker容器,但需要设置root密码,但是该密码是使用命令行中的参数设置的,对于存储在.bash_history中是非常危险的。

我尝试使用print pass | docker secret create mysql-root -使用机密,但是有同样的问题,密码已保存到.bash_history中。码头工人的秘密不是很秘密。

我尝试使用交互式命令:

while read -e line; do printf $line | docker secret create mysql-root -; break; done;

但是,xD非常丑陋。为什么在不将其保存到bash历史记录但又不删除所有bash历史记录的情况下创建docker机密的更明智的方式?

1 个答案:

答案 0 :(得分:0)

你可以试试

printf $line | sudo docker secret create MYSQL_ROOT_PASSWORD -

然后

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mariadb:tag

有关在 MariaDB 中使用机密的信息可以在 MariaDB page of DockerHub 上找到。

"Docker 的秘密 作为通过环境变量传递敏感信息的替代方法,可以将 _FILE 附加到前面列出的环境变量,从而使初始化脚本从容器中存在的文件中加载这些变量的值。特别是,这可用于从存储在 /run/secrets/<secret_name> 文件中的 Docker 机密加载密码。例如:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mariadb:tag

目前,仅支持 MYSQL_ROOT_PASSWORDMYSQL_ROOT_HOSTMYSQL_DATABASEMYSQL_USERMYSQL_PASSWORD"