2017-02-08 5 views
1

Я написал файл докеров, который запускает mysql на изображении ubuntu. Dockerfile является:Контейнер докера останавливается только при подключении тома

FROM ubuntu 
RUN apt-get update 
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server 
RUN sed -i '43s/.*/bind-address   = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf 
EXPOSE 3306 
ENTRYPOINT service mysql start && bash 

Если я бегу:

docker run -dit mysql-server 

после строительства контейнера все отлично работает и мой Apache/PHP контейнер может взаимодействовать с ним. Однако, если я запустил его с подключенным томом (docker run -dit -v ~/vol/:/var/lib/mysql/ mysql-server), контейнер перестанет работать через 30 секунд (я уверен, что каждый раз такое же количество времени).

Кто-нибудь знает, как я могу поддерживать контейнер и монтировать громкость? У меня никогда не было этой проблемы раньше, и я не могу найти что-нибудь еще в Интернете (я искал какое-то время). Благодарю.

+1

Все, что от 'Докера logs'? – Rickkwa

+0

В чем разница между ~/vol и тем, что существует внутри изображения в этом месте? Не забудьте проверить права доступа к файлам и владеть файлами uid/gid. – BMitch

+0

вы можете попробовать заменить в ENTRYPOINT '&& bash'' && sleep infinity'? – user2915097

ответ

0

Это потому, что вы маскируете содержимое /var/lib/mysql с содержимым ~/vol, которое, как я предполагаю, пуст. Таким образом, сервер MySQL не может запускаться, поскольку отсутствует файл базы данных. Я лично использовал бы официальный образ над вашей пользовательской реализацией, так как он будет обрабатывать то, что вы ищете here is the link to Dockerhub. У вас есть варианты для установки вашего файла my.cnf, если вам нужны эти изменения. Однако по умолчанию изображение привязывается к 0.0.0.0. См. Ссылку Dockerhub для параметров конфигурации.

Надеется, что это помогает

Дилан

+0

Спасибо. Да, я использую официальный образ сейчас, и он отлично работает. Я просто хотел понять, почему добавление тома продолжает рушиться. То, что вы сказали, имеет смысл, хотя даже со всеми правильными данными в '~/var' (скопированы из другого контейнера с помощью другого тома) мой контейнер продолжает сбой. Я думаю, возможно, что комбинация этого и изменение некоторых разрешений может сработать? Мое текущее решение этой проблемы - установить громкость в другом месте и запустить cronjob, чтобы скопировать все (что довольно уродливо). Я определенно думаю, что нужно более твердо понимать, как работают контейнеры Docker. Благодаря! –

+0

Рад, что он помог решить ваши проблемы - как правило, вместо того, чтобы катать ваши собственные изображения Docker, я бы пошел с официальными в качестве базы и сделал любые настройки на вершине, поскольку они действительно очень хороши. Разрешения в Docker могут быть болью, которую я бы рекомендовал «chown -R root: root

» после такой копии, чтобы явно определить ваши права и правила. Пока файлы имеют UID с нулевым i.e root, он должен избегать любых проблем, связанных с разрешением. Могу ли я спросить, зачем нужна эта копия?Также, если это разрешилось, пожалуйста, отметьте как разрешено :) Будем рады помочь дальше просто кричать –

Смежные вопросы