Docker контейнер с Samba выходит без какого-либо сообщения

8

У нас есть сервер под управлением CentOS, на котором есть несколько сервисов в контейнерах Docker для отделения их от изменений хоста.

На прошлой неделе в пятницу мы запустили обновление CentOS, и с тех пор одна из наших служб запускается и сразу же закрывается. Другие 15+ услуг в порядке.

Я клонировал настройку контейнера, изменил имя контейнера и перестроил с той же проблемой: контейнер запускается и затем выходит без какого-либо сообщения.

Контейнер получен из контейнера самбы Дэвида Персетта . Фактическая команда, которая сейчас выходит, но не использовалась для:

exec ionice -c 3 smbd -FS

Должен ли я понизить докер, будет ли это иметь побочные эффекты? Могу ли я еще что-нибудь сделать, чтобы это снова заработало? Мы выбрали контейнеры для абстрагирования от операционной системы, разве эта абстракция не так хороша, как ожидалось?

Джон
источник
Что произойдет, если вы запустите оболочку в контейнере, а затем выполните эту команду вручную?
Иордания
Мне было трудно попытаться это сделать, контейнер имеет точку входа и требует параметры командной строки для запуска. И если бы это сработало, я бы не знал, как использовать это в производстве, это возможно?
Джон

Ответы:

8

Контейнер выйдет без каких-либо комментариев, если вы не увеличите уровень отладки. Вы можете использовать что-то вроде --debuglevel=4.

После того, как вы это сделаете, перестроите и перезапустите контейнер, в конце вы получите что-то вроде:

Server exit (EOF on stdin)

И это указывает на решение, измените smbdвызов на:

exec ionice -c 3 smbd -FS < /dev/null

и ваш контейнер больше не должен выходить напрямую.

Я не уверен, что является причиной этого несовместимого изменения и почему оно не было проверено на существующих записях dockerhub.

У меня было два из моих контейнеров перерыв также при обновлении до 1.11. и при понижении до 1.10.3 столкнулся с ужасной Cannot stop container .... Container does not exist: container destroyedошибкой. Мне пришлось остановить докер, очистить всю историю, поэтому я не могу этого порекомендовать.

Энтон
источник
Это помогло мне решить проблему вчера, без понижения!
Джон
1
Я где-то читал, что остановка Samba - это особенность. Он пытается определить, умер ли его родительский процесс (EOF на stdin). Ваше решение работает отлично.
Мартин