亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

搭建持久化的 INFINI Console 與 Easysearch 容器環境

標簽:
數據庫

背景介绍

许多用户在使用 Docker 部署 INFINI Console(本文使用 1.29.6 版本)时,可能会遇到一个常见问题:重启容器后,之前在 INFINI Console 中所连接的系统集群配置会丢失。这个问题通常源于未能正确配置 Docker 的数据持久化。原本通过 Docker 运行 INFINI Console 只是一个简单的测试示例,并未考虑多次重启使用,现官方文档也进行了更新,参考:容器部署

接下来我们本地测试一下。

理解核心问题:Docker 容器与数据持久化

默认情况下,Docker 容器的文件系统是临时的。当容器被停止并删除后,容器内部所做的任何未被持久化的更改都会丢失。INFINI Console 的配置存储在其容器内部的特定目录中。为了在容器重启或重建后保留这些信息,我们必须将这些关键目录映射到宿主机(你的电脑)上的持久化存储位置。

准备工作

  • 操作系统: macOS (本文示例)

  • Docker 环境: OrbStack (https://orbstack.dev/) 或 Docker Desktop for Mac。

请确保 Docker 服务已启动并正常运行。你可以通过在终端执行 docker --version 来验证。


docker  --version

Docker  version  25.0.5,  build  5dc9bcc

步骤一:创建本地持久化目录和自定义 Docker 网络

首先,在宿主机上为 Console 和 Easysearch 创建用于存储配置、数据和日志的目录。同时,创建一个自定义 Docker 网络,以便容器之间可以通过名称进行通信。


# 1. 创建项目根目录和各个服务的持久化子目录

mkdir  -p  ~/infini_manual_setup/console/config  ~/infini_manual_setup/console/data  ~/infini_manual_setup/console/logs

mkdir  -p  ~/infini_manual_setup/easysearch/config  ~/infini_manual_setup/easysearch/data  ~/infini_manual_setup/easysearch/logs

cd  ~/infini_manual_setup

  

# 2. 创建一个自定义的 Docker 桥接网络

docker  network  create  infini_app_net

  • infini_app_net 是我们为这两个容器创建的自定义网络名称。

步骤二:提取初始配置文件

为了方便首次启动和后续自定义,我们需要从官方 Docker 镜像中提取默认的配置文件到我们本地创建的持久化目录中。

1. INFINI Console (1.29.6) 初始配置

根据 INFINI Console 官方 Docker 文档,其容器内配置文件位于 /config


docker  pull  infinilabs/console:1.29.6

docker  run  --rm  \

-v $PWD/console/config:/temp_host_config \

infinilabs/console:1.29.6  \

sh -c "cp -a /config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

2. INFINI Easysearch (1.13.0) 初始配置

INFINI Easysearch 镜像内部的配置文件位于 /app/easysearch/config,并且需要初始管理员密码 INFINILabs01

重要提示:请务必为 Easysearch 设置安全的密码。


docker  pull  infinilabs/easysearch:1.13.0

docker  run  --rm  \

-e EASYSEARCH_INITIAL_ADMIN_PASSWORD="INFINILabs01" \

-v  $PWD/easysearch/config:/temp_host_config  \

infinilabs/easysearch:1.13.0 \

sh  -c  "cp -a /app/easysearch/config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

现在,你的本地 console/configeasysearch/config 目录应该包含了初始配置文件。

检查目录如下


tree  -L  3  .

.

├──  console

│ ├──  config

│ │ ├──  install_agent.tpl

│ │ ├──  permission.json

│ │ ├──  setup

│ │ └──  system_config.tpl

│ ├──  data

│ └──  logs

└──  easysearch

├──  config

│ ├──  admin.crt

│ ├──  admin.key

│ ├──  analysis-ik

│ ├──  ca.crt

│ ├──  ca.key

│ ├──  easysearch.yml

│ ├──  easysearch.yml.example

│ ├──  instance.crt

│ ├──  instance.key

│ ├──  jvm.options

│ ├──  jvm.options.d

│ ├──  log4j2.properties

│ └──  security

├──  data

└──  logs

步骤三:手动运行 INFINI Easysearch 容器

使用 docker run 命令启动 Easysearch,并配置端口映射、环境变量和最重要的——卷挂载。


docker  run  -d  \

--name  easysearch01  \

--network  infini_app_net  \

-p  9200:9200  \

-p  9300:9300  \

-e  cluster.name="infini_local_cluster"  \

-e  node.name="easysearch-node01"  \

-e  cluster.initial_master_nodes="easysearch-node01"  \

-e  "ES_JAVA_OPTS=-Xms1g -Xmx1g"  \

-e  EASYSEARCH_INITIAL_ADMIN_PASSWORD="INFINILabs01"  \

-v  $PWD/easysearch/config:/app/easysearch/config  \

-v  $PWD/easysearch/data:/app/easysearch/data  \

-v  $PWD/easysearch/logs:/app/easysearch/logs  \

--ulimit  memlock=-1:-1  \

--ulimit  nofile=65536:65536  \

infinilabs/easysearch:1.13.0

关键参数解释:

  • --name easysearch01: 为容器指定一个名称。

  • --network infini_app_net: 连接到自定义网络。

  • -p HOST_PORT:CONTAINER_PORT: 端口映射。

  • -e VARIABLE=VALUE: 设置环境变量。

  • -v $PWD/host/path:/container/path: 实现持久化的核心。将宿主机当前工作目录 ($PWD) 下的子目录映射到容器内的指定路径。

步骤四:手动运行 INFINI Console 容器

现在启动 Console 容器,同样配置网络、端口、环境变量和卷挂载。


docker  run  -d  \

--name  console01  \

--network  infini_app_net  \

-p  9000:9000  \

-v  $PWD/console/config:/config  \

-v  $PWD/console/data:/data  \

-v  $PWD/console/logs:/log  \

infinilabs/console:1.29.6

查看日志


docker  logs  -f  easysearch01

docker  logs  -f  console01

步骤五:验证服务和持久化

  1. 检查容器状态: docker ps (应能看到 easysearch01console01)。

  2. 访问 Console: 浏览器打开 http://localhost:9000

  3. 在 Console 中进行初始化配置

  4. 测试持久化 (重启 Console 容器):


docker  stop  console01

docker  rm  console01

# 重新运行步骤四中启动 Console 的 docker run 命令 (确保所有参数一致)

操作截图

再次访问 Console: 打开 http://localhost:9000。如果一切正常,证明持久化成功。

步骤六:停止和清理(可选)

  • 停止容器: docker stop console01 easysearch01

  • 移除容器: docker rm console01 easysearch01

  • 移除网络: docker network rm infini_app_net

  • 移除本地持久化数据 (如果不再需要):


rm  -rf  ~/infini_manual_setup/console

rm  -rf  ~/infini_manual_setup/easysearch

总结

通过 docker run 命令并仔细配置卷挂载,我们成功地为 INFINI Console 和 Easysearch 构建了一个具有持久化能力的本地容器环境,有效解决了重启后配置丢失的问题。虽然手动操作参数较多,但它能让你更清晰地理解 Docker 的核心机制。

在后续的文章中,我们将探讨如何使用 Docker Compose 来简化这一过程。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消