当前位置: 首页 > article >正文

Docker启动ES容器打包本地镜像

文章目录

  • 1、安装 Docker
  • 2、下载镜像
  • 3、查看已下载的镜像
  • 4、 保存和加载镜像
  • 5、.tar 文件与 Docker 镜像的关系
  • 6、如何从 .tar 文件加载 Docker 镜像
  • 7、为什么需要 .tar 文件?
  • 8、ES 8.x版本无法启动
    • 8.1 问题原因
    • 8.2 解决方案
    • 8.3 提交容器为新镜像

1、安装 Docker

如果你还没有安装 Docker,请先下载并安装 Docker Desktop for Mac:

访问 Docker 官网:https://www.docker.com/products/docker-desktop。

下载适用于 macOS 的 Docker Desktop 安装包。

双击安装包,按照提示完成安装。

安装完成后,启动 Docker Desktop。

2、下载镜像

方式一:使用 Docker CLI
Docker CLI 是 Docker 提供的命令行工具,可以通过终端操作 Docker。
(1)打开终端
在 macOS 上打开 终端(Terminal)。

(2)拉取 Docker 镜像
使用 docker pull 命令下载镜像。例如,拉取官方的 elasticsearch 镜像:

docker pull elasticsearch

(3)指定镜像版本
如果需要下载特定版本的镜像,可以在镜像名称后加上标签(tag)。例如,拉取 elasticsearch 的 7.17.0 版本:

docker pull elasticsearch:7.17.0

方式二:使用 Docker Desktop

Docker Desktop 提供了图形化界面,可以方便地管理镜像。

(1)打开 Docker Desktop
启动 Docker Desktop,确保 Docker 正在运行。

(2)搜索和拉取镜像
在 Docker Desktop 中,点击左侧菜单的 Images。点击 Pull 按钮。
选择需要的版本,如:7.17.20
在这里插入图片描述

3、查看已下载的镜像

使用以下命令查看本地已下载的镜像:

docker images

在这里插入图片描述

4、 保存和加载镜像

如果需要将镜像保存为文件,或者从文件加载镜像,可以使用以下命令:

(1)保存镜像为文件

将镜像保存为 .tar 文件:

docker save -o my_elasticsearch.tar elasticsearch:7.17.20

(2)从文件加载镜像

从 .tar 文件加载镜像:

docker load -i my_elasticsearch.tar

.tar 文件实际上是 Docker 镜像的打包文件,它包含了镜像的所有层(layers)和元数据。Docker 镜像是通过多个层组成的,而 .tar 文件是将这些层打包成一个文件的形式。你可以通过 Docker 命令将这个 .tar 文件加载为一个可用的 Docker 镜像。

5、.tar 文件与 Docker 镜像的关系

  • Docker 镜像:Docker 镜像是用于创建容器的模板,它由多个只读层(layers)组成。

  • .tar 文件:当你使用 docker save 命令时,Docker 会将镜像的所有层打包成一个 .tar 文件。这个文件并不是直接可用的镜像,而是镜像的存档文件。

加载镜像:通过 docker load 命令,可以将 .tar 文件加载回 Docker,使其成为一个可用的镜像。

6、如何从 .tar 文件加载 Docker 镜像

如果你已经有一个 .tar 文件,可以通过以下步骤将其加载为 Docker 镜像:

(1)使用 docker load 命令

在终端中运行以下命令:

docker load -i <your-image-file>.tar

例如:

docker load -i my_elasticsearch.tar

(2)查看加载的镜像
加载完成后,使用以下命令查看本地镜像:

docker images

你会看到刚刚加载的镜像。

7、为什么需要 .tar 文件?

.tar 文件的主要用途是:

  • 备份和迁移镜像:将镜像保存为 .tar 文件后,可以将其复制到其他机器上加载。

  • 离线环境使用:在没有网络的环境中,可以通过 .tar 文件分发镜像。

  • 镜像共享:将镜像打包成 .tar 文件后,可以通过文件共享的方式传递镜像。

8、ES 8.x版本无法启动

Elasticsearch 8.x 版本(特别是 8.0 及以上)在容器化部署时,默认启用了安全特性(如 TLS 加密、用户认证等),因此如果不进行配置调整,直接启动容器可能会失败。以下是解决这个问题的详细步骤:

8.1 问题原因

Elasticsearch 8.x 默认启用了以下安全特性:

  • TLS 加密:节点间通信和 HTTP 接口默认启用 TLS。

  • 用户认证:默认启用用户名和密码认证。

  • 自动生成配置:首次启动时,Elasticsearch 会自动生成安全配置(如证书、密码等),但这些配置需要手动保存或调整。

如果直接启动容器,可能会因为缺少必要的配置而失败。

8.2 解决方案

思路:先在启动时通过特定参数,启动容器,然后修改容器中相关配置,再打包成为默认参数可以启动的镜像

(1)运行以下命令启动容器,并让 Elasticsearch 自动生成配置:

docker run -d --name elasticsearch \
  -e "discovery.type=single-node" \
  -p 9200:9200 \
  -p 9300:9300 \
  elasticsearch:8.17.2
  • discovery.type=single-node:设置为单节点模式。

  • xpack.security.enabled=false:禁用安全特性(仅用于测试环境)。

(2)进入容器

docker exec -it elasticsearch /bin/bash

(3)修改配置文件
在容器内修改 Elasticsearch 的配置文件,关闭安全认证。

Elasticsearch 的配置文件通常位于 /usr/share/elasticsearch/config/elasticsearch.yml。使用以下命令编辑文件:

vi /usr/share/elasticsearch/config/elasticsearch.yml

如果没有 vi 和 vim
用以下方式:

echo "xpack.security.enabled: false" >> /usr/share/elasticsearch/config/elasticsearch.yml

(4)保存文件并退出容器

exit

(5)重启容器:

docker restart elasticsearch

将容器打包成新镜像
将修改后的容器打包成一个新的 Docker 镜像。

8.3 提交容器为新镜像

使用以下命令将容器打包成新镜像:

docker commit elasticsearch my-elasticsearch:8.17.2
  • elasticsearch:当前运行的容器名称。
  • my-elasticsearch:8.17.2:新镜像的名称和标签。

http://www.kler.cn/a/563311.html

相关文章:

  • mmdetection框架下使用yolov3训练Seaships数据集
  • 安卓工控平板电脑在环境监测设备中的运用
  • 前端实现rsa加密功能
  • 26.贪心算法4
  • 第二十二天 学习HarmonyOS的分布式软总线技术,了解跨设备通信的原理
  • 【原创工具】同文件夹PDF文件合并 By怜渠客
  • 如何连接到服务器
  • 请解释 React 中的 Hooks,何时使用 Hooks 更合适?
  • LangChain构建行业知识库实践:从架构设计到生产部署全指南
  • 网络原理---HTTP/HTTPS
  • 10道Redis常见面试题速通
  • 如何搭建起成熟的团队知识文档管理系统
  • Linux下安装FastDFS步骤详解
  • 物联网通信应用案例之《智慧农业》
  • DeepSeek 高阶应用技术详解(4)
  • 爬虫获取翻译文本接口:技术实现与应用实践
  • 第2篇:SOLR 的架构总览
  • VScode中Markdown PDF无法正确输出包含数学公式的pdf解决方案
  • 【Mysql】我在广州学Mysql 系列—— 性能优化相关例题
  • seacmsv9注入管理员账号密码+orderby+limi