我正在虚拟机上运行elasticsearch
码头集装箱,最近出现了elasticsearch
故障,容器刚刚停止。原因 - 我的ssd空间不足。已停止的码头集装箱中的磁盘管理(清理)
我可以轻松地清理我的索引,但真正的问题在于我实际上无法启动Docker来执行此操作。容器在启动后立即停止,无法通过Web UI或bash清理空间。
如何清理我的磁盘在停止的容器中,我无法启动?
我正在虚拟机上运行elasticsearch
码头集装箱,最近出现了elasticsearch
故障,容器刚刚停止。原因 - 我的ssd空间不足。已停止的码头集装箱中的磁盘管理(清理)
我可以轻松地清理我的索引,但真正的问题在于我实际上无法启动Docker来执行此操作。容器在启动后立即停止,无法通过Web UI或bash清理空间。
如何清理我的磁盘在停止的容器中,我无法启动?
假设您使用的是official elasticsearch
image,Elasticsearch数据目录将是一个卷(介绍该图像的Dockerfile
中的VOLUME /usr/share/elasticsearch/data
语句)。
您现在可以启动另一个容器,使用--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"
属性将描述您的主机的文件系统卷的位置。当容器启动时,这个目录被简单地绑定到容器的挂载名称空间中;您在主机上的此目录中所做的任何更改都会在启动时反映到容器中。