一、前置条件
- 安装docker-compose,可以参考这篇文章 https://blog.youkuaiyun.com/weixin_43721000/article/details/125425947
二、安装ES+kibana
1.创建并进入项目根目录
mkdir -p /cxstar/es_kibana_7.12.0
cd /cxstar/es_kibana_7.12.0
2.创建 docker-compose.yml 文件
vim docker-compose.yml
内容如下
version: '3.5' # docker-compose版本
services:
elasticsearch:
image: elasticsearch:7.12.0 # 指定es基础镜像
restart: always # 开机自启
networks:
- es-kibana-net # 网络配置
container_name: es7120 # 容器名
volumes:
- ./data:/usr/share/elasticsearch/data # 数据目录映射
- ./plugins:/usr/share/elasticsearch/plugins # 插件目录映射
environment:
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" # 1G内存
- discovery.type=single-node # 单点模式
ports:
- '9200:9200' # java、集群通信端口
- '9300:9300' # http通信端口
privileged: true # root启动
kibana:
image: kibana:7.12.0 # 指定kibana基础镜像
restart: always # 开机自启
networks:
- es-kibana-net # 网络配置
container_name: kibana7120 # 容器名
ports:
- '5601:5601' # kibana端口
networks:
es-kibana-net:
name: es-kibana-net # 创建网络
3.启动容器
docker-compose up -d
到此一般就安装完成了,但是可能会遇到下面的问题:
常见安装失败问题
启动后执行 docker ps 命令发现没有容器,启动失败了。
执行 docker logs -f <容器id> 查看容器日志,报错如下
uncaught exception in thread [main]
ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];
Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:396)
at java.base/java.nio.file.Files.createDirectory(Files.java:694)
at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:801)
at java.base/java.nio.file.Files.createDirectories(Files.java:787)
at org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:265)
at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:202)
at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:262)
at org.elasticsearch.node.Node.<init>(Node.java:376)
at org.elasticsearch.node.Node.<init>(Node.java:281)
at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:219)
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:219)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:399)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:75)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:116)
at org.elasticsearch.cli.Command.main(Command.java:79)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:81)
说明es没有权限操作挂载目录,无法绑定节点,赋予data目录权限即可
sudo chmod 777 /cxstar/es_kibana_7.12.0/data
删除es的docker容器,再次执行容器启动命令
启动成功
四、访问测试
- 访问5601端口,选择 Explore on my own
- 选择菜单栏下的 Dev Tools
- 请求es
ok