Если я запускаю контейнер docker mariadb, пароль, переданный MYSQL_ROOT_PASSWORD
, устанавливается только через некоторое время. Версия контейнера mariadb - 10.4., docker - 19.03.5. Моя ОС - Linux Mint 19.3 ..
Для тестирования я удалил все docker компоненты, как описано здесь .
Я сделал fre sh переустановку docker, как описано здесь и сделал linux -postinstall, как описано здесь .
После этого я запустил контейнер mariadb:
docker run --name mariadb \
-e MYSQL_ROOT_PASSWORD=myPass \
-d mariadb:10.4
После этого docker exec mariadb bash -c 'echo "$MYSQL_ROOT_PASSWORD"'
дает: myPass
. Я могу подключиться к mysql в работающем контейнере с помощью: docker exec -it mariadb mysql
. Доступ с docker exec -it mariadb mysql -u root -pmyPass
запрещен.
После ожидания в течение примерно 5 минут вход в систему невозможен без пароля. Теперь пароль установлен правильно, и я могу войти только с docker exec -it mariadb mysql -u root -pmyPass
.
. Я мог воспроизвести это несколько раз. Если вы посмотрите log , вы увидите разрыв между 11:28 и 11:34. Я предполагаю, что до этой записи: 2020-01-13 11:34:09 0 [Note] InnoDB: Buffer pool(s) load completed at 200113 11:34:09
, можно получить доступ без ввода пароля. После этого требуется пароль.
Если я использую обычный контейнер MySQL вместо MariaDB, установка пароля работает как положено. Я запускаю контейнер docker mysql с:
docker run --name myC \
-e MYSQL_ROOT_PASSWORD=myPass \
-d mysql:8.0.18
Пароль устанавливается немедленно. Поэтому, как только контейнер работает, доступ возможен только с docker exec -it myC mysql -u root -pmyPass
, что является ожидаемым поведением.
Я запускаю контейнеры напрямую с docker run ...
с консоли bash, я не использую docker -составить или другие средства автоматизации.
Кто-нибудь может объяснить, почему это происходит или есть решение, позволяющее избежать этого промежутка времени?
Спасибо!