我正在虛擬機上運行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"
屬性將描述您的主機的文件系統卷的位置。當容器啓動時,這個目錄被簡單地綁定到容器的掛載名稱空間中;您在主機上的此目錄中所做的任何更改都會在啓動時反映到容器中。