• 使用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进行生产环境部署一定要考虑好存储等设置)

  • 相关阅读:
    输出流对象
    1.2最简单的c++程序
    c++的初步认识
    理想程序员
    从字符数组中删除字符
    打印杨辉三角
    旋转数组
    找出1000以内的所有完数
    计算兔子的总数
    101-200有多少个素数?
  • 原文地址:https://www.cnblogs.com/gaoze/p/9353635.html
Copyright © 2020-2023  润新知