2017-02-10 17 views
0

Я изменил некоторые настройки конфигурации mysql и установил что-то не так, теперь контейнер Docker продолжает перезагружать, и я не могу найти файл для редактирования в файловой системе хоста. Я пробовал папки aufs/diff, но до сих пор не смог его найти. Также попробовал:Ошибка контейнера MySQL после изменения /etc/mysql/my.cnf, как отредактировать назад?

find/-name my.cnf -exec nano {} \; 

Но он не поднимает файл, который я изменил. И я попытался изменить config.v2.json, чтобы начать /bin/bash вместо mysqld и перезапустить докер, но все же началось mysqld (должный руководитель или что-то?), Используя официальный образ контейнера mysql.

+0

сообщение Dockerfile, команда 'docker run'command, любые детали помогают, и вам нужно будет создать новое изображение. – user2915097

+0

Я использую ** docker run --restart = always --log-opt max-size = 10m --log-opt max-file = 10 --name mysql -e MYSQL_ROOT_PASSWORD = pass -d mysql **, поэтому не используется dockerfile. – Synomi

+0

ваше изображение mysql происходит откуда? Когда вы его изменили, как вы это сделали? просто 'docker exec', а затем' docker commit'? Можете ли вы опубликовать «docker images» grep mysql' – user2915097

ответ

2

Я вижу два возможных решения для вашей проблемы:

выполняется в обход Entrypoint для MySQL изображения

Найти свое имя изображения, выполнив docker images затем запустить:

docker run -it --entrypoint="/bin/sh" OPTIONS image 

Это должно отведите вас в bash внутри контейнера, и оттуда вы можете выполнить все команды, которые вы хотите найти в файле my.cnf. Хотя я не знаю, если редактирование файла оттуда, сохраните его и попробуйте запустить его снова, будет работать. Я не пробовал.

Удалить старое изображение и использовать надлежащим образом, чтобы отредактировать my.cnf файлу

Найти свое имя изображения, выполнив: docker images, а затем удалить его, запустив docker rmi <image_name>

Проверьте документацию для MySQL по умолчанию изображения на MySQL Dockerhub довольно прямо на это, и я цитирую:

Использование пользовательских данных MySQL файл конфигурации при запуске MySQL

конфигурация задается в файле /etc/mysql/my.cnf, и что файл в свою очередь, включает в себя любые файлы, найденные в каталоге /etc/mysql/conf.d , которые заканчиваются с .cnf. Настройки в файлах в этом каталоге будут дополнять и/или переопределять настройки в /etc/mysql/my.cnf. Если вы хотите, чтобы использовали настраиваемую конфигурацию MySQL, вы можете создать свой альтернативный файл конфигурации в каталоге на хост-машине, а затем установить в это расположение каталога как /etc/mysql/conf.d внутри контейнера mysql .

Если /my/custom/config-file.cnf это путь и имя файла конфигурации пользовательских , вы можете начать свой MySQL контейнер, как это (обратите внимание, что используется только путь к директории пользовательского файла конфигурации в этой команде):

$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

Это запустит новый контейнер некоторые-MySQL, где экземпляр MySQL использует объединенные параметры запуска из /etc/mysql/my.cnf и /и т.д./MySQL /conf.d/config-file.cnf, с настройками из последних имеет преимущество.

С этого момента, и если вы создаете файл my.cnf на хосте, то вы никогда не столкнетесь с этой проблемой снова, так как вы можете редактировать файл столько раз, сколько вы хотите.

+0

. Я пришел к такому же выводу, что я редактировал неправильные настройки config. Выше метод действительно не помогает восстановить базы данных, которые были потеряны из-за того, что mysql не запускается. Может быть, они могут быть спасены, так как они по объему, я думаю, но это работа еще на один день, когда есть настоящая потребность в ней. – Synomi