目录
通过docker安装es
通过docker 安装es最主要就是有两个问题,一个是最大数max_map_count默认为65530导致es启动失败。解决方法是:
sysctl -w vm.max_map_count=262144
验证:
第二个问题是报错:
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
解决方法是通过-e指定环境变量discovery.type
docker run --name es -it -d --rm -e 'discovery.type=single-node' -p 9200:9200 -p 9300:9300 elasticsearch:7.2.0
通过docker安装kibana
kibana需要知道es的host地址
第一步启动kibana的容器:
docker run -it -d --rm --name kibana -p 5601:5601 kibana:7.2.0
第二步进入容器内部修改kibana.yml:
docker exec -it 425e bash
vi config/kibana.yml
将elasticsearch.hosts的IP进行修改
可以修改为两种形式,第一种是物理机的地址,比如我这里是10.154.76.25。
也可以修改为es容器的docker ip,可以用docker inspect es 查看es容器的ip地址,一般都是172.17.0.2或者3之类的。
第三步 重启kibana容器:
docker restart kibana
然后可以监控日志:docker logs -f kinaba
看到过了一会容器自动启动起来了,就可以访问http://10.154.76.25:5601/
docker网桥解析
基于docker run创建容器时,可以使用–net选项指定容器的网络模式,默认是bridge模式。我这里主要用了bridge和overlap模式(overlap的名字是shadownet,可以跨主机联网)
每种模式的详细解释见:https://blog.csdn.net/renfeigui0/article/details/103322661
下面这个图也很形象展示了物理机和容器的关系:
比如我们运行docker inspect bridge,可以看到有三个容器是在这个模式下的:
运行docker inspect shadownet可以看到hadoop集群是运行在这个网络里的。