专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像
专业版
轩辕镜像 官方专业版
轩辕镜像
专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题轩辕镜像免费版
其他
关于我们网站地图
热门搜索:
elasticsearch

raaftech/elasticsearch

raaftech

基于Red Hat OpenJDK 8镜像的Elasticsearch,适用于OpenShift环境,也可独立运行,支持在Kubernetes或OpenShift上部署大规模生产集群,简化配置并兼容多个Elasticsearch版本。

下载次数: 0状态:社区镜像维护者:raaftech仓库类型:镜像最近更新:6 年前
轩辕镜像,不浪费每一次拉取。点击查看
中文简介
标签下载
镜像标签列表与下载命令
轩辕镜像,不浪费每一次拉取。点击查看

Elasticsearch Docker镜像(适用于Kubernetes和OpenShift)

尽管Elasticsearch已有关于在Docker环境中使用Elasticsearch的优质文档,但该文档主要关注Docker Compose在单实例之外的应用。之后,https://github.com/pires%E5%BC%80%E5%B1%95%E4%BA%86https://github.com/pires/kubernetes-elasticsearch-cluster%EF%BC%8C%E4%BD%BFElasticsearch%E8%83%BD%E4%B8%8EKubernetes%E8%89%AF%E5%A5%BD%E5%85%BC%E5%AE%B9%E3%80%82

本项目受https://github.com/pires%E7%9A%84https://github.com/pires/kubernetes-elasticsearch-cluster%E5%90%AF%E5%8F%91%EF%BC%8C%E5%85%81%E8%AE%B8%E5%9C%A8Kubernetes%E6%88%96OpenShift%E4%B8%8A%E8%BF%90%E8%A1%8C%E5%A4%A7%E8%A7%84%E6%A8%A1Elasticsearch%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%EF%BC%8C%E7%AE%80%E5%8C%96%E4%BA%86Kubernetes%E7%9B%B8%E5%85%B3%E9%85%8D%E7%BD%AE%EF%BC%88%E5%8C%85%E6%8B%AC%E6%B6%88%E9%99%A4%E5%AF%B9%E7%89%B9%E6%9D%83%E5%88%9D%E5%A7%8B%E5%8C%96%E5%AE%B9%E5%99%A8%E7%9A%84%E9%9C%80%E6%B1%82%EF%BC%89%EF%BC%8C%E5%B9%B6%E9%80%9A%E8%BF%87%E7%89%B9%E6%AE%8A%E5%A4%84%E7%90%86%E4%BD%BF%E4%B8%8D%E5%90%8C%E6%96%B0%E6%97%A7%E7%89%88%E6%9C%AC%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%E7%9A%84Elasticsearch%E8%83%BD%E5%85%BC%E5%AE%B9%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E5%BC%95%E5%85%A5%E4%B8%8E%E5%BC%83%E7%94%A8%E3%80%82

下文将介绍如何构建和独立运行本项目的Docker镜像,以及如何使用附带的Kubernetes文件部署n规模集群(已在Kubernetes 1.10+和OpenShift 3.9上测试)。

截至本文撰写时(2019-04-08),这些Dockerfile已用于Elasticsearch 6.4.3、6.5.4、6.6.2和6.7.1版本。

目录

  • 前置要求
  • 构建Docker镜像
  • 使用Kubernetes部署
  • 使用OpenShift
  • 环境变量和参数

前置要求

构建和运行Docker镜像需要较新版本的Docker。本地独立运行时(无需处理大量请求),建议至少4G内存和1-2个CPU核心。

在Kubernetes上运行需Kubernetes集群,已在1.10、1.12版本及OpenShift 3.9附带的Kubernetes服务上测试。资源需求差异较大,示例配置:12节点集群(3个主节点、3个数据节点、3个摄入节点、3个客户端节点),总计约12核CPU、60GB内存和100GB存储。

关于存储:Elasticsearch数据在GlusterFS存储上存在已知严重问题。GlusterFS团队在https://github.com/gluster/glusterfs/issues/517%E8%B7%9F%E8%B8%AA%E8%BF%99%E4%BA%9B%E9%97%AE%E9%A2%98%EF%BC%8CRed Hat也在此处、此处和此处记录了相关问题。

若使用GlusterFS 4.1之前版本,必须使用https://github.com/gluster/gluster-kubernetes/blob/master/docs/design/gluster-block-provisioning.md%E5%AD%98%E5%82%A8%EF%BC%8C%E5%90%A6%E5%88%99%E4%BC%9A%E5%9B%A0ctime/mtime/utime%E5%B7%AE%E5%BC%82%E5%AF%BC%E8%87%B4%E9%94%81%E6%96%87%E4%BB%B6%E4%BF%AE%E6%94%B9%E9%97%AE%E9%A2%98%EF%BC%88%E8%AF%A6%E8%A7%81%E5%89%8D%E6%96%87%E9%93%BE%E6%8E%A5%EF%BC%89%E3%80%82%E8%8B%A5%E4%BD%BF%E7%94%A8GlusterFS 4.1及以上版本,需在数据卷上启用ctime特性。

内存设置说明:本配置假设JVM版本为1.8.0 R191或更高,这些版本支持+EnableContainerSupport、+InitialRAMPercentage和+MaxRAMPercentage特性,可根据Kubernetes YAML文件中Pod的内存分配动态为JVM提供堆内存,无需显式指定JVM内存大小。

最后,假设使用较新的现代操作系统环境,docker和kubectl命令已添加到PATH,且能使用cmd.exe、powershell、ksh或bash。

构建Docker镜像

本项目基于最小Linux+OpenJDK镜像构建,提取标准Elasticsearch tar包,通过自定义setup.sh和run.sh脚本安装并启动。

Dockerfile继承自Red Hat的https://github.com/jboss-container-images/openjdk%E9%95%9C%E5%83%8F%E3%80%82%E7%90%86%E8%AE%BA%E4%B8%8A%EF%BC%8C%E4%BB%BB%E4%BD%95%E5%8C%85%E5%90%ABOpenJDK 8+(Elasticsearch 6.2+可运行于OpenJDK 9/10/11)及bash、curl命令的镜像均可运行,但Red Hat镜像的优势在于承诺持续更新,优于常规OpenJDK镜像的现状。

Red Hat的"OpenJDK生命周期和支持政策"文档指出:"问:生命周期日期是否适用于OpenShift中的OpenJDK镜像?答:是。OpenJDK 8的生命周期适用于Red Hat容器目录中的容器镜像,OpenJDK 11的生命周期将在其发布后适用。"

以下是独立Docker镜像的构建和运行步骤:

  1. 克隆本仓库,进入仓库目录。
  2. 构建镜像:
    docker build -t someorg/elasticsearch .
  3. 运行容器:
    docker run -d -p 9200:9200 -p 9300:9300 --rm --name es someorg/elasticsearch
  4. 查看日志:
    docker logs -f es(按<ctrl-c>停止查看)
  5. 验证运行:
    curl http://localhost:9200(返回基本信息JSON)

清理步骤:

  • 停止容器:docker stop es
  • 清理容器(可选,docker run带--rm时无需):docker container prune
  • 清理卷(可选):docker volume prune
  • 删除镜像:docker rmi someorg/elasticsearch
  • 删除基础镜像:docker rmi registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift

上述步骤运行的是默认配置的独立Elasticsearch节点,未使用环境变量自定义配置。通过修改环境变量和Docker设置,单个镜像可在Elasticsearch环境中承担不同角色,这是在Kubernetes环境中运行的关键。

使用Kubernetes部署

kubernetes子目录包含Kubernetes环境中的资源配置YAML文件,包括四种资源类型:

  • route:暴露服务供外部访问的HTTP端点;
  • service:定义Pod间开放的端口;
  • statefulset:具有身份和状态的Pod集合;
  • deployment:无持久身份且通常无状态的Pod集合。

这些资源分别对应服务配置的关键方面:外部访问方式(route)、内部通信端口(service)、需保持状态和身份的系统(statefulset)、可替换的无状态工作节点(deployment)。

Kubernetes目录中的YAML文件通过设置环境变量,将Docker镜像配置为Elasticsearch集群中的特定角色。部署步骤如下(需Kubernetes环境及kubectl命令):

  1. 进入kubernetes子目录,检查statefulset和deployment文件中的默认资源配置(存储声明大小、CPU核心数、内存分配)。
  2. 创建集群资源:
    kubectl create -f service-es-transport.yaml
    kubectl create -f service-es-http.yaml
    kubectl create -f route-es-http.yaml
    kubectl create -f statefulset-es-master.yaml
    kubectl create -f statefulset-es-data.yaml
    kubectl create -f deployment-es-ingest.yaml
    kubectl create -f deployment-es-client.yaml

默认配置适用于中等规模生产环境(约60GiB内存、12核CPU)。测试环境可降低资源分配。注意:Pod内存分配通常需为JVM内存(-Xms和-Xmx)的两倍。此外,Kubernetes中的持久存储类名称可能与YAML文件中不同,可通过kubectl get sc查看可用存储类。

使用OpenShift

OpenShift v3及以上基于Kubernetes构建,增加了镜像构建、版本控制、认证和隔离等功能,详情见okd.io。

OpenShift保持与Kubernetes的兼容性,可通过oc login登录后,将上述kubectl命令替换为oc执行,例如:oc create -f service-es-transport.yaml。

环境变量和参数

Docker镜像可在构建和运行时通过参数(ARG)和环境变量(ENV)进行配置。ARG仅在构建时(docker build)生效,ENV在构建和运行时(docker run)均生效。

ARG PROXY_URL

默认值:none

构建时用于curl获取 artifacts 的代理URL。示例值:http://proxy.example.com:8080。

ARG NO_PROXY

默认值:none

指定不使用代理的IP地址和(部分)主机名列表(逗号分隔)。可部分匹配主机名(如.example.com匹配所有以.example.com结尾的主机)。示例值:localhost,127.0.0.1,.example.com。

ENV HOME

默认值:/elasticsearch

Elasticsearch安装的主目录。请勿修改,否则会导致意外结果。

ENV PATH

默认值:/elasticsearch/bin:$PATH

镜像的默认路径,前缀为Elasticsearch的bin目录。修改时需确保/elasticsearch/bin为首个条目。

ENV ES_ALLOW_MMAPFS

默认值:true

Elasticsearch 6.5.0及以上版本可用,6.5.0之前版本无效。允许或禁止mmapfs作为索引后端。若无法将vm.max_map_count设置为至少262144(无root权限),可设为false,并确保ES_INDEX_STORE_TYPE设为niofs或simplefs。

当Elasticsearch检测到非本地主机运行时,会执行启动检查,包括vm.max_map_count是否至少262144。6.5.0之前版本即使index.store.type设为非mmapfs也无法跳过该检查(因index.store.type仅为默认值,可在索引创建时覆盖)。vm.max_map_count仅在index.store.type为mmapfs且node.store.allow_mmapfs为true(Linux和macOS上index.store.type为fs或mmapfs时的默认值)时相关。

ENV ES_JAVA_OPTS

默认值:-Xms1g -Xmx1g -XX:ParallelGCThreads=1

用于设置JVM参数。默认配置将最小和最大堆大小设为相等(禁用动态伸缩以避免性能损耗),并将ParallelGCThreads设为1(确保最多1个并发垃圾回收线程)。此设置针对jvm.options中配置的CMS(ConcurrentMarkSweep)垃圾收集器。

可在jvm.options文件中设置这些参数,但通过环境变量可按实例覆盖。

ENV ES_ARCHIVE_BASEURL

默认值:https://artifacts.elastic.co/downloads/elasticsearch

控制setup.sh获取安装包的地址。若ES_VERSION为快照版本,需设为https://snapshots.elastic.co/downloads/elasticsearch;稳定版本使用默认值即可。

ENV ES_ARCHIVE_KEYID

默认值:46095ACC8548582C1A2699A9D27D666CD88E42B4

Elastic Co用于签名发布 artifacts 的公钥ID。setup.sh使用此ID和下载的哈希文件从PGP密钥服务器获取公钥,验证下载 artifacts 的有效性。

ENV ES_CLUSTER_NAME

默认值:elasticsearch-default

Elasticsearch集群名称。

ENV ES_DISCOVERY_SERVICE

默认值:none

设置Elasticsearch配置中的discovery.zen.ping.unicast.hosts。Zen Discovery是Elasticsearch默认的集群节点发现模块。Kubernetes配置文件将此值设为es-transport(定义节点间传输端口9300的Kubernetes服务名称)。

注意:Elastic Co文档指出该值可为主机列表,Kubernetes服务名称的DNS条目可能解析为多个主机(DNS轮询)。

ENV ES_HTTP_CORS_ALLOW_ORIGIN

默认值:*

允许的跨域请求源(详见下文ES_HTTP_CORS_ENABLE)。若值前后添加/,将被视为正则表达式,例如/https?:\/\/localhost(:[0-9]+)?/支持HTTP和HTTPS。

默认值*存在安全风险(允许任何来源的跨域请求),建议修改。更多信息见Elastic Co的HTTP模块文档。

ENV ES_HTTP_CORS_ENABLE

默认值:true

启用或禁用跨域资源共享(CORS),即允许其他源的客户端执行请求。详见跨域资源共享。

ES_INDEX_AUTO_CREATE

默认值:true

默认情况下,向不存在的索引POST文档会自动创建索引。可通过设为.kibana*,.logstash*,.management*,.monitoring*,.security*,.triggered_watches*,.watcher-history*,.watches*禁用自动创建(需显式创建索引)。注意:值不能为false,需为允许自动创建的索引白名单。

ENV ES_INDEX_STORE_TYPE

默认值:fs

默认由Elasticsearch选择索引存储类型实现(Linux和macOS为mmapfs,Windows为simplefs)。

此值仅指定默认索引存储类型,不限制索引创建时指定的存储类型。另见ES_ALLOW_MMAPFS。更多信息见存储模块文档。

ENV ES_MAX_LOCAL_STORAGE_NODES

默认值:1

限制可访问本地数据路径的Elasticsearch进程数,几乎所有情况下应设为1。若本地运行多个Elasticsearch进程且需访问同一数据路径,可增加此值。生产环境通常不应大于1。详见Elasticsearch参考指南的节点数据路径设置。

ENV ES_MEMORY_LOCK

默认值:false

Elasticsearch参考指南:JVM执行 major GC 时会触及堆的每个页面,若页面被换出到磁盘,需换回内存,导致大量磁盘抖动,影响请求处理。

有多种方法配置系统禁止交换,其中一种是通过mlockall(Unix)或virtuallock(Windows)请求JVM锁定堆内存,通过Elasticsearch的bootstrap.memory_lock设置实现。

但有时设置后Elasticsearch可能无法锁定堆(如elasticsearch用户无memlock unlimited权限)。内存锁定检查用于验证bootstrap.memory_lock启用时JVM是否成功锁定堆。

默认false禁用检查,若确认有memlock unlimited权限,可设为true。

ENV ES_NETWORK_HOST

默认值:_site_

Elasticsearch绑定的主机名或IP地址,并向集群其他节点广播。接受IP地址、主机名、特殊值或其组合数组。

特殊值:_[networkInterface]_(网络接口地址,如_en0_)、_local_(系统回环地址,如127.0.0.1)、_site_(系统站点本地地址,如192.168.0.1、172.16.0.1、10.0.0.1)、_global_(系统全局地址,如8.8.8.8)。

ENV ES_NODE_DATA

默认值:true

是否作为数据节点。

ENV ES_NODE_INGEST

默认值:true

是否作为摄入节点。

ENV ES_NODE_MASTER

默认值:true

是否作为主节点。

ENV ES_NUMBER_OF_MASTERS

默认值:1

设置discovery.zen.minimum_master_nodes,即新选举的主节点需加入的最小主节点数,以完成选举并确认主节点身份。

该设置还控制活动集群中需存在的最小活动主节点数,若不满足,活动主节点将退位并重新选举。

必须设为主节点数的法定人数(主节点数/2 + 1)。建议避免仅2个主节点(法定人数为2,任一节点故障导致集群不可用)。实践中,3个主节点且minimum_master_nodes=2是良好选择。详见[避免脑裂](https://

更多相关 Docker 镜像与资源

以下是 raaftech/elasticsearch 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:

  • library/elasticsearch Docker 镜像说明
  • bitnami/elasticsearch Docker 镜像说明(Elasticsearch 搜索引擎,Bitnami 企业级配置)
  • milvusdb/milvus Docker 镜像说明
  • semitechnologies/weaviate Docker 镜像说明(向量数据库,适合 AI 应用)
  • elastic/elasticsearch Docker 镜像说明(Elasticsearch 搜索引擎,Elastic 官方版本)

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 elasticsearch 镜像标签

docker pull docker.xuanyuan.run/raaftech/elasticsearch:<标签>

使用方法:

  • 登录认证方式
  • 免认证方式

DockerHub 原生拉取命令

docker pull raaftech/elasticsearch:<标签>

更多 elasticsearch 镜像推荐

elasticsearch logo

library/elasticsearch

Docker 官方镜像
Elasticsearch是一款功能强大的开源搜索与分析引擎,它基于Lucene构建,具备分布式、高扩展、实时处理的特性,能够高效存储、检索和分析各类结构化与非结构化数据,广泛应用于日志分析、全文搜索、业务智能等场景,通过简化数据探索流程,帮助用户快速从海量数据中获取有价值的洞察,让复杂数据的分析与利用变得简单高效。
6.6千 次收藏5亿+ 次下载
5 天前更新
bitnami/elasticsearch logo

bitnami/elasticsearch

Bitnami Secure Images(VMware Tanzu)
Bitnami为Elasticsearch提供的安全镜像,是预先配置且经过安全加固的解决方案,集成开源搜索引擎Elasticsearch的核心功能,可支持日志分析、全文搜索、实时数据处理等多种应用场景,通过优化性能、简化部署流程并遵循安全最佳实践,助力用户快速构建安全可靠的Elasticsearch运行环境,适用于开发、测试及生产环境,有效降低配置复杂度与潜在安全风险。
84 次收藏1亿+ 次下载
7 个月前更新
bitnamicharts/elasticsearch logo

bitnamicharts/elasticsearch

bitnamicharts
Bitnami提供的Elasticsearch Helm chart,用于在Kubernetes环境中便捷部署和管理分布式搜索引擎Elasticsearch。
1 次收藏500万+ 次下载
8 个月前更新
itzg/elasticsearch logo

itzg/elasticsearch

itzg
提供易于配置的Elasticsearch节点,支持灵活创建任意规模的集群,可与非容器化节点混合使用,适用于开发、测试和生产环境。
72 次收藏50万+ 次下载
8 年前更新
demisto/elasticsearch logo

demisto/elasticsearch

demisto
暂无描述
10万+ 次下载
4 天前更新
onlyoffice/elasticsearch logo

onlyoffice/elasticsearch

onlyoffice
暂无描述
2 次收藏5万+ 次下载
3 年前更新

查看更多 elasticsearch 相关镜像

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

Docker 配置

登录仓库拉取

通过 Docker 登录认证访问私有仓库

专属域名拉取

无需登录使用专属域名

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

Harbor 镜像源配置

Harbor Proxy Repository 对接专属域名

Portainer 镜像源配置

Portainer Registries 加速拉取

Nexus 镜像源配置

Nexus3 Docker Proxy 内网缓存

系统配置

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

MacOS OrbStack

MacOS OrbStack 容器配置

Docker Compose

Docker Compose 项目配置

NAS 设备

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

极空间

极空间 NAS 系统配置服务

网络设备

爱快路由

爱快 iKuai 路由系统配置

宝塔面板

在宝塔面板一键配置镜像

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

使用与功能问题

配置了专属域名后,docker search 为什么会报错?

docker search 限制

Docker Hub 上有的镜像,为什么在轩辕镜像网站搜不到?

站内搜不到镜像

机器不能直连外网时,怎么用 docker save / load 迁镜像?

离线 save/load

docker pull 拉插件报错(plugin v1+json)怎么办?

插件要用 plugin install

WSL 里 Docker 拉镜像特别慢,怎么排查和优化?

WSL 拉取慢

轩辕镜像安全吗?如何用 digest 校验镜像没被篡改?

安全与 digest

第一次用轩辕镜像拉 Docker 镜像,要怎么登录和配置?

新手拉取配置

轩辕镜像合规吗?轩辕镜像的合规是怎么做的?

镜像合规机制

错误码与失败问题

docker pull 提示 manifest unknown 怎么办?

manifest unknown

docker pull 提示 no matching manifest 怎么办?

no matching manifest(架构)

镜像已拉取完成,却提示 invalid tar header 或 failed to register layer 怎么办?

invalid tar header(解压)

Docker pull 时 HTTPS / TLS 证书验证失败怎么办?

TLS 证书失败

Docker pull 时 DNS 解析超时或连不上仓库怎么办?

DNS 超时

docker 无法连接轩辕镜像域名怎么办?

域名连通性排查

Docker 拉取出现 410 Gone 怎么办?

410 Gone 排查

出现 402 或「流量用尽」提示怎么办?

402 与流量用尽

Docker 拉取提示 UNAUTHORIZED(401)怎么办?

401 认证失败

遇到 429 Too Many Requests(请求太频繁)怎么办?

429 限流

docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?

D-Bus 凭证提示

为什么会出现「单层超过 20GB」或 413,无法加速拉取?

413 与超大单层

账号 / 计费 / 权限

轩辕镜像免费版和专业版有什么区别?

免费版与专业版区别

轩辕镜像支持哪些 Docker 镜像仓库?

支持的镜像仓库

镜像拉取失败还会不会扣流量?

失败是否计费

麒麟 V10 / 统信 UOS 提示 KYSEC 权限不够怎么办?

KYSEC 拦截脚本

如何在轩辕镜像申请开具发票?

申请开票

怎么修改轩辕镜像的网站登录和仓库登录密码?

修改登录密码

如何注销轩辕镜像账户?要注意什么?

注销账户

配置与原理类

写了 registry-mirrors,为什么还是走官方或仍然报错?

mirrors 不生效

怎么用 docker tag 去掉镜像名里的轩辕域名前缀?

去掉域名前缀

如何拉取指定 CPU 架构的镜像(如 ARM64、AMD64)?

指定架构拉取

用轩辕镜像拉镜像时快时慢,常见原因有哪些?

拉取速度原因

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
raaftech/elasticsearch
博客Docker 镜像公告与技术博客
热门查看热门 Docker 镜像推荐
安装一键安装 Docker 并配置镜像源
镜像拉取问题咨询请 提交工单,官方技术交流群:1072982923。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
镜像拉取问题咨询请提交工单,官方技术交流群:。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
商务合作:点击复制邮箱
©2024-2026 源码跳动
商务合作:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.