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

news/2025/2/24 8:12:14

文章目录

  • 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

http://www.niftyadmin.cn/n/5864103.html

相关文章

Vue2 和 Vue3 的响应式原理对比

Object.defineProperty 与 Proxy 对比 前言一、Vue2 的响应式原理二、Vue3 的响应式原理三、性能优化总结 前言 响应式系统是 Vue 框架的核心机制之一&#xff0c;通俗易懂的来说 vue2需要手动登记&#xff0c;只有被用到的才会被记录&#xff0c;vue3全自动监控。 一、Vue2 …

一周学会Flask3 Python Web开发-Jinja2模板基本使用

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们平台开发web系统&#xff0c;必须用到网页&#xff0c;单纯的静态网页无法满足我们的需求。我们可以使用模版引擎技术&am…

智能优化算法:莲花算法(Lotus flower algorithm,LFA)介绍,提供MATLAB代码

一、 莲花算法 1.1 算法原理 莲花算法&#xff08;Lotus flower algorithm&#xff0c;LFA&#xff09;是一种受自然启发的优化算法&#xff0c;其灵感来源于莲花的自清洁特性和授粉过程。莲花的自清洁特性&#xff0c;即所谓的“莲花效应”&#xff0c;是由其叶片表面的微纳…

《GNU/Linux Shell命令全解析》

前言: Shell&#xff08;如Bash、Zsh&#xff09;是一个用户应用程序&#xff0c;通过系统调用接口与内核空间进行交互,运行在所示位置在用户空间中。 GNU/Linux内核架构简易图: 1.基础命令行操作 1.1 Shell功能定义 命令行解释器&#xff1a;Shell解释用户输入的命令&#x…

【环境配置】maven,mysql,node.js,vue的快速配置与上手

【环境配置】maven,mysql,node.js,vue的快速配置与上手 我们在利用springbootvue来进行全栈项目开发时&#xff0c;需要做很多的准备工作&#xff0c;其中maven,mysql,node,js和vue的配置是必不可少的。 本期我们尽可能精简地介绍它们的配置以及快速上手。 1.maven 1.1.下载…

推荐一款AI大模型托管平台-OpenWebUI

推荐一款AI大模型托管平台-OpenWebUI 1. OpenWebUI 1. OpenWebUI什么? 官网地址&#xff1a;https://openwebui.com/ GitHub地址&#xff1a; https://github.com/open-webui/open-webui Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台&#xff0c;旨在完全离…

PnP——根据3D与2d图片估计相机运动

引入 当知道n个3D空间点及其投影位置和2d像素点时&#xff0c;如何估计相机的位姿。PnP(Perspective-n-Point) 是求解3D到2D点对运动的方法。 直接线性变换&#xff08;DLT&#xff09; 问题描述 已知一组3D点 P i ( X i , Y i , Z i , 1 ) ⊤ \mathbf{P}_i (X_i, Y_i, …

【Git 学习笔记_27】DIY 实战篇:利用 DeepSeek 实现 GitHub 的 GPG 秘钥创建与配置

文章目录 1 前言2 准备工作3 具体配置过程3.1. 本地生成 GPG 密钥3.2. 导出 GPG 密钥3.3. 将密钥配置到 Git 中3.4. 测试提交 4 问题排查记录5 小结与复盘 1 前言 昨天在更新我的第二个 Vim 专栏《Mastering Vim (2nd Ed.)》时遇到一个经典的 Git 操作问题&#xff1a;如何在 …