Я дурачусь с некоторыми докерными контейнерами, и мне интересно, как я могу получить пароль, сгенерированный при создании контейнера из журналов.
Итак, я запускаю контейнер с
$> docker container run --name mysql -p 3306:3306 -e MYSQL_RANDOM_ROOT_PASSWORD=yes -d mysql
Эта команда запускает новый контейнер mysql со случайно сгенерированным паролем, который я могу получить из журналов. Если быть точным, то эта команда дает, помимо прочего, пропуск:
$> docker container logs mysql
...
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
GENERATED ROOT PASSWORD: Poow3eet2aat6aePhae6leipeecagife
2019-04-07T08:00:18.945238Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15) MySQL Community Server - GPL.
Это просто фон. Естественно, важной частью является строка с GENERATED ROOT PASSWORD
, и вы можете предположить, что я получил этот текстовый файл из любого другого источника. Я хотел бы сохранить его в некоторой переменной с чем-то вроде
export ROOT_PASS=$(expression)
Для этого мне нужно придумать выражение, которое будет возвращать только случайно сгенерированную строку. Конечно, в качестве альтернативы я мог бы просто присвоить соответствующую подстроку шаблона регулярного выражения переменной.
Я думал о
docker container logs mysql | grep -e "PASSWORD: .*"
но это приводит к целой строке и выделяет PASSWORD: Poow3eet2aat6aePhae6leipeecagife
на самом деле. Я также подумал о чем-то с sed:
docker container logs mysql | sed -e 's/PASSWORD: .*/$1/g'
... но это лишило интересную часть и фактически вернуло все остальное.
Есть предложения?