Как создать секретный секрет докера?

Мне нужно создать докер-контейнер MariaDB, но нужно установить пароль 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?


person e-info128    schedule 05.07.2020    source источник
comment
Если вы добавите пробел перед командой, она не будет записана в файл .bash_history.   -  person dan1st    schedule 05.07.2020
comment
Не работает на CentOS 8, команда видна с пробелами.   -  person e-info128    schedule 05.07.2020
comment
Как насчет этого?   -  person dan1st    schedule 05.07.2020
comment
Но я не хочу удалять всю историю   -  person e-info128    schedule 06.07.2020


Ответы (1)


Вы могли бы попробовать

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 DockerHub.

Секреты Docker В качестве альтернативы передаче конфиденциальной информации через переменные среды _FILE может быть добавлено к ранее перечисленным переменным среды, в результате чего сценарий инициализации загружает значения для этих переменных из файлов, присутствующих в контейнере. В частности, это можно использовать для загрузки паролей из секретов Docker, хранящихся в /run/secrets/<secret_name> файлах. Например:

$ 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.

person Jean-Louis    schedule 28.04.2021