将已创建的Elasticsearch 8.12.0的docker容器中的数据挂载到宿主机操作步骤

服务器配置:

操作系统:Ubuntu 24.04.1 LTS

内存:64G

硬盘:2T

CPU:Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz

docker版本(docker --version):Docker version 26.1.3, build 26.1.3-0ubuntu1~24.04.1

docker-compose版本(docker-compose -v):docker-compose version 1.29.2, build unknown

问题是之前已经创建了Elasticsearch 和 kibana容器并且已经提供服务了,里面产生了大量的数据,目的是保证数据不被删除的情况下,将数据迁移出来,挂载的宿主机的目录下。旧的docker启动的docker-compose.yml配置如下(这个配置文件中宿主目录与容器中的目录映射关系搞反了例如:- es_data:/opt/elasticsearch/data,/opt/elasticsearch/data其实是宿主机的目录,容器中的目录是:/usr/share/elasticsearch/data):

version: '3'

services:

elasticsearch:

image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0

environment:

  • discovery.type=single-node

  • ES_JAVA_OPTS=-Xms4g -Xmx8g

  • xpack.security.enabled=false

ports:

  • "9200:9200"

volumes:

  • es_data:/opt/elasticsearch/data

kibana:

image: docker.elastic.co/kibana/kibana:8.12.0

ports:

  • "5601:5601"

environment:

depends_on:

  • elasticsearch

volumes:

es_data:

操作步骤如下(操作完成后,旧的容器还在没有被删除,新的elasticsearch和kibana容器ID已经变了):

1、查看容器服务 :docker ps,可以看到elasticsearch容器的ID是25d39efe5c18 ,kibana容器的ID是:01ceb52cc425

(base) root@root:~# docker ps

01ceb52cc425 docker.elastic.co/kibana/kibana:8.12.0 "/bin/tini -- /usr/l..." 8 months ago Up 46 hours 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp es_kibana_1

25d39efe5c18 docker.elastic.co/elasticsearch/elasticsearch:8.12.0 "/bin/tini -- /usr/l..." 8 months ago Up 46 hours 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp 25d39efe5c18_es_elasticsearch_1

2、将数据从elasticsearch容器中复制出来,放到/opt/elasticsearch/目录下,执行完一下命令后,可以看到/opt/elasticsearch/目录下多了一个data目录,这个就是从容器中复制出来的数据。

从容器中复制数据到宿主机:

(base) root@root:~# docker cp 25d39efe5c18:/usr/share/elasticsearch/data /opt/elasticsearch/

3、停止elasticsearch和kibana的容器服务(这里要两个一起停止,后边需要两个一起重建)

停止kibana服务:

(base) root@root:~# docker stop 01ceb52cc425

停止elasticsearch服务:

(base) root@root:~# docker stop 25d39efe5c18

4、将docker-compose.yml配置文件修改为如下(注意红色的容器名称一定不要和之前的一样):

version: '3'

services:

es01:

image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0

container_name: es01

特权模式:允许内存锁定

privileged: true

重启策略:故障自动重启

restart: always

environment:

  • discovery.type=single-node

  • ES_JAVA_OPTS=-Xms31g -Xmx31g

  • xpack.security.enabled=false

  • bootstrap.memory_lock=true # 锁定内存,禁用SWAP

ports:

  • "9200:9200"

volumes:

  • /opt/elasticsearch/data:/usr/share/elasticsearch/data

kibana01:

image: docker.elastic.co/kibana/kibana:8.12.0

container_name: kibana01

ports:

  • "5601:5601"

environment:

depends_on:

  • es01

5、创建elasticsearch和kibana容器并后台启动

(base) root@root:~# docker-compose up -d es01

(base) root@root:~# docker-compose up -d kibana01

6、访问elasticsearch和kibana即可看到对应的界面(kibana启动需要几分钟,耐心等一会):

elasticsearch访问地址:http://192.168.1.100:9200/

复制代码
{
  "name" : "5c61ec77ca3b",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "CXebZmVlTIBeBCoQgNUYcA",
  "version" : {
    "number" : "8.12.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "1665f707fd9354402c02142c1e6b5c0fbcedfcp9",
    "build_date" : "2024-01-11T10:05:27.953830042Z",
    "build_snapshot" : false,
    "lucene_version" : "9.9.1",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

kibana访问地址:http://192.168.1.100:5601/app/management/data/index_management/indices

相关推荐
鹏大师运维3 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
007张三丰3 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
serve the people4 小时前
Elasticsearch(1) could you tell me how to use es if i am a beginner
大数据·elasticsearch·jenkins
weixin_604236674 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
鹤落晴春4 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
一个儒雅随和的男子5 小时前
Elasticsearch出现深度分页问题怎么解决?
大数据·elasticsearch·搜索引擎
梦梦代码精5 小时前
2026年PHP开源商城系统实测对比:架构、多商户、商用授权,谁才是真·省心?
vue.js·docker·架构·开源·代码规范
AI智图坊5 小时前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc
鹤落晴春8 小时前
【K8s】Pod调度、configMaps
云原生·容器·kubernetes
极客先躯9 小时前
高级java每日一道面试题-2026年02月02日-实战篇[Docker]-如何实现容器的持久化存储?
docker·容器·面试宝典·持久化·存储·韵味·java高级面试题