1

使用docker启动elasticsearch,kibana,cerebro

卸载旧版本docker

较旧版本的Docker被称为docker或docker-engine。如果已安装这些,请卸载它们以及相关的依赖项。

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

保留/var/lib/docker/的内容,包括图像,容器,卷和网络。
Docker Engine - 社区包现在称为docker-ce。

安装docker

您可以根据需要以不同方式安装Docker Engine。

  • 社区:大多数用户设置Docker的存储库并从中进行安装,以便于安装和升级任务。这是推荐的方法。
  • 有些用户下载RPM软件包并手动安装并完全手动管理升级。这在诸如在没有访问互联网的气隙系统上安装Docker的情况下非常有用。
  • 在测试和开发环境中,一些用户选择使用自动便捷脚本来安装Docker。

此次演示,我们选择社区推荐的方法,也就是设置存储库的方法。

通过设置存储库安装dokcer并启动验证

  1. 安装所需的包。yum-utils提供yum-config-manager实用程序,devicemapper存储驱动程序需要device-mapper-persistent-data和lvm2.

    `sudo yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2`

  2. 使用以下命令设置稳定存储库。

    `sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/l...`

  3. 安装docker-ce社区版

    你可以安装最新版
    yum install docker-ce docker-ce-cli containerd.io

    也可以通过命令查看支持的版本号,进行特定版本安装

    yum list docker-ce --showduplicates | sort -r

    sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

  4. 启动docker

    sudo systemctl start docker

  5. 通过运行hello-world映像验证Docker Engine - 社区是否已正确安装。

    sudo docker run hello-world

    [root@VM_0_11_centos ~]# docker run hello-world
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    1b930d010525: Pull complete 
    Digest: sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f
    Status: Downloaded newer image for hello-world:latest
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/
```

安装docker-compose

  1. 运行此命令以下载Docker Compose的当前稳定版本

    sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

  2. 对二进制文件应用可执行权限

    sudo chmod +x /usr/local/bin/docker-compose

  3. 安装测试

    docker-compose --version

写docker-compose.yml

version: '2.2'
services:
  cerebro:
    image: lmenezes/cerebro:0.8.3
    container_name: cerebro
    ports:
      - "9000:9000"
    command:
      - -Dhosts.0.host=http://elasticsearch:9200
    networks:
      - es7net
  kibana:
    image: docker.elastic.co/kibana/kibana:7.2.0
    container_name: kibana7
    environment:
      - I18N_LOCALE=zh-CN
      - XPACK_GRAPH_ENABLED=true
      - TIMELION_ENABLED=true
      - XPACK_MONITORING_COLLECTION_ENABLED="true"
    ports:
      - "5601:5601"
    networks:
      - es7net
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0
    container_name: es7_01
    environment:
      - cluster.name=geektime
      - node.name=es7_01
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.seed_hosts=es7_01
      - cluster.initial_master_nodes=es7_01
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - es7data1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - es7net

volumes:
  es7data1:
    driver: local

networks:
  es7net:
    driver: bridge

腾讯云部署集群踩坑记

在腾讯云上面,想搭建一套elasticsearch集群,发现discover的时候,获取不到集群信息。

后面发现是由于 network.host这个配置也包含了network.publish_host这个配置了。

那么在腾讯云上面,就会出现这两个地址同时指向了腾讯云服务器的内网ip,致命的是两台服务器的内网IP并不能互通,导致了这个问题。

解决这个问题也很简单

network.host: $内网IP$
network.publish_host: $公网IP$

另外附上官网network配置说明

docker命令小结

  • 启动

docker-compose up

  • 停止容器

docker-compose down

  • 停止容器并且移除数据

docker-compose down -v

  • 一些docker 命令
docker ps
docker stop Name/ContainerId
docker start Name/ContainerId
  • 删除单个容器
-f, –force=false; -l, –link=false Remove the specified link and not the underlying container; -v, –volumes=false Remove the volumes associated to the container
  • 删除所有容器

rm docker ps -a -q

  • 停止、启动、杀死、重启一个容器
 start Name/ID  
 kill Name/ID  
restart name/ID

附录


小鸡
214 声望24 粉丝

1.01的365次方=37.8