Мы используем докер 1.7.1, сборку 786b29d на RHEL 6.7. Недавно у нас было несколько раз, когда демон докера зависал, и нам приходилось перезагружать машину, чтобы вернуть его.
Типичный сценарий заключается в том, что контейнер, который работал нормально в течение нескольких недель, внезапно начинает выдавать ошибки. Когда-нибудь мы можем перезапустить контейнер, и все будет хорошо. Но в других случаях все команды докера будут зависать, а перезапуск демона не удастся, и я вижу это в ps:
4 Z root 4895 1 0 80 0 - 0 exit Aug23 ? 00:01:24 [docker]
Глядя в системный журнал, я увидел это:
device-mapper: ioctl: unable to remove open device docker-253:6-1048578-317bb6ad40cded3fbfd752d95551861c2e4ef08dffc1186853fea0e85da6b12b
INFO: task docker:16676 blocked for more than 120 seconds.
Not tainted 2.6.32-573.12.1.el6.x86_64 #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
docker D 000000000000000b 0 16676 1 0x00000080
ffff88035ef13ea8 0000000000000082 ffff88035ef13e70 ffff88035ef13e6c
ffff88035ef13e28 ffff88062fc29a00 0000376c85170937 ffff8800283759c0
0000000000000400 00000001039d40c7 ffff8803000445f8 ffff88035ef13fd8
Call Trace:
[] _mutexlock_slowpath+0x96/0x210
[] ? wake_up_process+0x15/0x20
[] mutex_lock+0x2b/0x50
[] sync_filesystems+0x26/0x150
[] sys_sync+0x17/0x40
[] system_call_fastpath+0x16/0x1b
Последняя версия докера — 1.12.1, а мы — 1.7.1. Можно или нужно установить новую версию? 1.7.1 — это версия, которую устанавливает yum. Если бы мне нужна была новая версия, как бы я ее установил (извините, если это глупый вопрос, я не системный администратор).
Погуглив, я нашел это на сайте Red Hat: «Red Hat не рекомендует запускать какую-либо версию Docker на любых выпусках RHEL 6». Мы уже несколько лет используем докер на RHEL 6, так что это меня смущает. Обновление до RHEL 7 сейчас для нас не вариант.
Кто-нибудь может пролить свет на эти вопросы? Нам нужно, чтобы докер работал надежно без частых перезагрузок.