2016-12-14 3 views
0

Я запускаю контейнер-докер-машину elasticsearch на своей виртуальной машине и недавно получил ошибку elasticsearch, контейнер просто остановлен. Причина - мой ssd вышел из космоса.Управление дисками (очистка) в остановленном контейнере докеров

Я могу легко очистить свои индексы, но реальная проблема здесь в том, что я на самом деле не могу запустить докер для этого. Контейнер останавливается сразу после запуска без возможности перехода через веб-интерфейс или bash на место для очистки.

Как очистить диск в остановленном контейнере, который я не мог запустить?

ответ

1

Предполагая, что вы используете official elasticsearch image, каталог данных Elasticsearch будет томом (обратите внимание на инструкцию VOLUME /usr/share/elasticsearch/data в этом Dockerfile).

Теперь вы можете запустить другой контейнер, установка тома вашего исходного контейнера с помощью опции --volumes-from выполнять любые задачи очистки Вы считаете необходимым:

docker run --rm -it \ 
    --volumes-from=<original-elasticsearch-container> \ 
    ubuntu:latest \ 
    /bin/bash 

Если выйдет из строя, вы можете также запустить docker inspect на контейнере Elasticsearch и найдите каталог тома в файловой системе хоста (при условии, что вы используете драйвер тома по умолчанию local). Посмотрите на Mounts раздел на выходе JSON:

"Mounts": [ 
    { 
     "Name": "<volume-id>", 
     "Source": "/var/lib/docker/volumes/<volume-id>/_data", 
     "Destination": "/usr/share/elasticsearch/data", 
     "Driver": "local", 
     "Mode": "", 
     "RW": true, 
     "Propagation": "" 
    } 
], 

"Source" Свойство будет описывать местоположение тома на хост файловой системы. Когда контейнер запущен, этот каталог просто привязывается к пространству имен монтирования контейнера; любые изменения, внесенные вами в этом каталоге на хосте, будут отображаться в контейнере при его запуске.