停止的docker容器中的磁盘管理(清理)

时间:2016-12-14 19:19:18

标签: elasticsearch docker docker-container

我在我的虚拟机上运行elasticsearch docker容器,最近遇到elasticsearch失败,容器刚刚停止。原因 - 我的ssd超出了空间。

我可以轻松清理我的索引,但真正的问题是我实际上无法启动docker来做到这一点。容器在启动后立即停止,无法通过Web UI或bash进行清理。

如何在已停止的容器中清理我无法启动的磁盘?

1 个答案:

答案 0 :(得分: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

如果失败,您还可以在Elasticsearch容器上运行docker inspect并在主机文件系统中找到卷的目录(假设您使用的是默认的local卷驱动程序)。在JSON输出中查找Mounts部分:

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

"Source"属性将描述卷在主机文件系统上的位置。启动容器时,只需将此目录绑定到容器的mount命名空间中;您在主机上的此目录中所做的任何更改都将在启动时反映在容器中。