文章目录
- 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:新镜像的名称和标签。