使用docker啓動elasticsearch,kibana,cerebro

使用docker啓動elasticsearch,kibana,cerebro

卸載舊版本docker

較舊版本的Docker被稱爲docker或docker-engine。若是已安裝這些,請卸載它們以及相關的依賴項。html

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。node

安裝docker

您能夠根據須要以不一樣方式安裝Docker Engine。linux

  • 社區:大多數用戶設置Docker的存儲庫並從中進行安裝,以便於安裝和升級任務。這是推薦的方法。
  • 有些用戶下載RPM軟件包並手動安裝並徹底手動管理升級。這在諸如在沒有訪問互聯網的氣隙系統上安裝Docker的狀況下很是有用。
  • 在測試和開發環境中,一些用戶選擇使用自動便捷腳原本安裝Docker。

這次演示,咱們選擇社區推薦的方法,也就是設置存儲庫的方法。git

經過設置存儲庫安裝dokcer並啓動驗證

  1. 安裝所需的包。yum-utils提供yum-config-manager實用程序,devicemapper存儲驅動程序須要device-mapper-persistent-data和lvm2.

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

  2. 使用如下命令設置穩定存儲庫。

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

  3. 安裝docker-ce社區版

    你能夠安裝最新版
    yum install docker-ce docker-ce-cli containerd.iobootstrap

    也能夠經過命令查看支持的版本號,進行特定版本安裝ubuntu

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

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

  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

附錄

相關文章
相關標籤/搜索