1.上传,然后拉取(记得要在所在目录下)
2.docker images查看是否拉取成功
3.创建容器并启动
docker run -d \
--name es \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-v /path/to/es/data:/usr/share/elasticsearch/data \
elasticsearch:7.12.1
docker run -d \
--name kibana \
-p 5601:5601 \
-e "ELASTICSEARCH_HOSTS=http://es:9200" \
kibana:7.12.1
4.docker ps检查一下这两个有没有,如果没有那就是要启动一下
docker start es
docker start kibana
然后在检查一下就好了
如果发现启动了过一会自动断掉了,可以 docker logs es检查一下
我这里是权限问题,为 /root
目录默认只有 root
用户有读写权限,而 Elasticsearch 容器内通常是以 elasticsearch
用户(UID 一般为 1000)运行的,该用户没有对 /root
目录的访问权限
所以我要创建一个新的有权限的目录来存放,但是之前的已经挂载好了,所以要先删掉,不然会重名,但是镜像不需要删掉,因为这里只是修改了挂载目录
1.停止并删除已存在的 es
容器
首先,使用以下命令停止 es
容器:
docker stop es
2.删除该容器:
docker rm es
3.创建新数据目录:在系统中选一个合适的位置(比如 /data/es_data
),创建专门用于 Elasticsearch 数据持久化的目录
mkdir -p /data/es_data
4.修改目录权限:让 Elasticsearch 容器内的 elasticsearch
用户(默认 UID/GID 为 1000
)能访问该目录
chown -R 1000:1000 /data/es_data
5.重新创建并启动 es
容器
docker run -d \
--name es \
--network hm-net \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-v /data/es_data:/usr/share/elasticsearch/data \
elasticsearch:7.12.1
然后就可以了
如果访问不了,那可能就是端口没有开放,开放一下端口就好了
sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent
sudo firewall-cmd --reload
然后要重启一下docker
然后再次启动es和kibana
docker start es
docker start kibana
然后docker ps检查一下有没有,然后再访问一下,就好了
这样就可以了