Я использую функцию consul healthcheck, и я продолжаю получать эти "мертвые" контейнеры:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
20fd397ba638 progrium/consul:latest "\"/bin/bash -c 'cur 15 minutes ago Dead
Что такое "мертвый" контейнер? Когда остановленный контейнер становится "мертвым"?
Для записи я запускаю образы progrium/consul + gliderlabs/registrator + SERVICE_XXXX_CHECK env для проверки работоспособности. Он запускает проверку работоспособности script, запуская изображение каждые X секунд, что-то вроде docker run --rm my/img healthcheck.sh
Меня интересует вообще то, что означает "мертвый" и как предотвратить его. Еще одна особенность заключается в том, что у моих мертвых контейнеров нет имени.
это информация из проверки контейнера:
"State": {
"Dead": true,
"Error": "",
"ExitCode": 1,
"FinishedAt": "2015-05-30T19:00:01.814291614Z",
"OOMKilled": false,
"Paused": false,
"Pid": 0,
"Restarting": false,
"Running": false,
"StartedAt": "2015-05-30T18:59:51.739464262Z"
},
Странно то, что только время от времени контейнер становится мертвым и не удаляется.
Спасибо
Изменить: Глядя на журналы, я обнаружил, что делает остановку контейнера неудачной:
Handler for DELETE /containers/{name:.*} returned error: Cannot destroy container 003876e41429013e46187ebcf6acce1486bc5011435c610bd163b159ba550fbc:
Driver aufs failed to remove root filesystem 003876e41429013e46187ebcf6acce1486bc5011435c610bd163b159ba550fbc:
rename /var/lib/docker/aufs/diff/003876e41429013e46187ebcf6acce1486bc5011435c610bd163b159ba550fbc
/var/lib/docker/aufs/ diff/003876e41429013e46187ebcf6acce1486bc5011435c610bd163b159ba550fbc-removing:
device or resource busy
Почему это происходит?
edit2: нашел это: https://github.com/docker/docker/issues/9665