使用docker试用各种软件及docker-ES设置

试用开源软件的优劣势

由于现在容器化的热度,大部分软件都有docker official镜像,那么使用docker就是试用软件很好的方法:

优势:

1、可以免去安装部署的过程。

2、不会对当前系统环境产生任何影响。

3、占用资源极少。

不太像劣势的劣势:

1、不能用来进行性能测试。不过性能测试本身对硬件环境和软件环境都有一定要求,即使自己部署依旧需要较多配置和准备。

2、少量软件的官方镜像版本并不能跟上软件版本更新。(例如ES)

3、少量软件需要进行奇怪的设置,但是这些大部分在镜像主页都有说明。(还是ES)

例:测试ES的各种接口

1、去dockerhub官网找到ES的镜像,https://hub.docker.com/_/elasticsearch/

1.5、如果dockerhub下载镜像太慢,可以使用阿里云加速dockerhub的功能(反正免费)

1.5.5、你要用gcr的镜像?最简单的方法翻X和人肉翻X选一个,都不行可以考虑通过dockerhub下载gcr的镜像,不过本文不涉及k8s安装部署,所以不提这部分了。

2、找到pull command:docker pull elasticsearch

3、执行pull command。

4、看看镜像的使用说明(主要是找到启动container的命令)。

docker run -d elasticsearch

5、启动镜像。

6、使用。

 

#上面是大部分软件的正常过程,应该已经结束了,但是ES有些奇怪的问题:

 

7、我要干的工作是测试ES的java接口,所以在java工程中加入了以下配置

<dependency>
    	<groupId>org.elasticsearch.client</groupId>
    	<artifactId>transport</artifactId>
    	<version>5.6.10</version>
</dependency>

8、最早我用的是RELEASE版本,发现连不上ES,而且也连不上以前单机部署的ES。

9,发现dockerhub上latest竟然是5.6.10而不是6.3.1?

10、修改dependecy到上面那个5.6.10版本,发现还是连不上,但是能连上单机部署的ES了。

11、检查一下由于java driver连接的是9300端口,也就是说需要ES是以完整集群设置来启动才行。

12、查询docker hub页面的cluster设置发现:

  One example of adding clustering support is to pass the configuration on the docker run:

  $ docker run -d --name elas elasticsearch -Etransport.host=0.0.0.0 -Ediscovery.zen.minimum_master_nodes=1

13、运行这条命令发现镜像启动后会自动关闭,怀疑出错。

14、把-d去掉,发现是由于vm.max_map_count配置的问题。

15、查询stackoverflow,发现最简单的办法还是修改宿主机的vm.max_map_count配置。

16、sudo sysctl -w vm.max_map_count=262144

17、再运行即可,记得暴露端口:

  sudo /kubernetes/local/bin/docker run -d -p 9200:9200 -p 9300:9300  elasticsearch -Etransport.host=0.0.0.0 -Ediscovery.zen.minimum_master_nodes=1

18、使用正常。

总结:

  正常来讲,对ES较为熟悉的用户应该知道9300是集群接口,如果仔细查看docker hub主页说明应当能知道这个需要启动cluster mode,但是如果只是想试用ES的话,这就比较坑了,而且docker run -e和docker run --systemctl设置vm.max_map_count都不方便(好吧我没成功)。但是除了ES外,其他什么mysql,tomcat,mongodb等软件试用起来都没问题,而且当db需要一个测试库时也可用来当测试数据库试用,不会影响任何其他系统环境,非常方便适合使用。(本文不涉及生产环境,所以mongodb设置数据存储系统这些生产环境才会用到的操作根本用不上,但是如果想用docker进行生产环境部署一定要考虑好存储等设置)

posted @ 2018-07-23 11:11  月影舞华  阅读(445)  评论(0编辑  收藏  举报