>我需要创建一个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。为什么创建 docker 机密而不将其保存到 bash 历史记录但不删除所有 bash 历史记录的投注方式?
我发现的最简单方法是使用以下方法:
docker secret create private_thing -
然后在命令行中输入机密,然后按 Ctrl-D 两次。
你可以试试
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 中使用密钥的信息可以在 DockerHub 的 MariaDB 页面上找到。
"码头工人的秘密 作为通过环境变量传递敏感信息的替代方法,可以将_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_PASSWORD
、MYSQL_ROOT_HOST
、MYSQL_DATABASE
、MYSQL_USER
和MYSQL_PASSWORD
">
您可以使用openssl rand选项生成随机字符串并传递给docker secret command,即
OpenSSL Rand -base64 10| docker secret create my_sec -
openssl rand 选项将生成 10 字节 base64 编码的随机字符串。