Docker-compose 建立ELK集群的實現方法_docker

來源:腳本之家  責任編輯:小易  

基于下面的需求:1.雖然單個Docker容器能夠100%移植到任何平臺,但是如何確保多容器分布式應用也是100%可移植?涵括范圍從準備階段到生產階段 或跨數據中心,或在公有云之間。2.我們已經實現Docker標準化,但是如何在這些標準之上能夠拓展 Docker生態系統的廣度和深度?3.如何重構應用程序交付流水線以便支持基于容器的快速迭代?4.將傳統整體型monolithic應用分解為微服務以后,有更多的組件需要跟蹤和管理,Docker生態系統如何幫助我們做到?Docker Machine,Docker Swarm,和Docker Compose.這三個組件分別覆蓋分布式應用整個周期的不同階段。并且是可以串聯起來www.13333515.buzz防采集請勿采集本網。

全部編排文件和配置文件可以訪問我的 Github ,大家只要修改配置文件中的路徑即可快速搭建一個3實例的ES集群和一個Kibana實例。

compose不支持緊耦合的容器組,也不支持容器共享存儲。

規劃

計劃創建3個ES實例組成一個集群,同時創建一個Kibana實例連接該集群。每個ES實例使用本地配置文件,方便配置文件的保存和版本管理。Kibana的配置文件也放在本地,通過文件映射的方式掛載到容器內。

默認情況下,鏡像debian:wheezy如果沒有默認的服務在運行的話就會退出,所以要改變一下默認的命令,docker-compose.yml為: dvc:image:debian:wheezy volumes: www:/usr/share/nginx/html:ro

總的目錄結構如下:

官方鏡像下的簡單示例 本節中,將創建一個 Container 來運行 Docker 的官方 Registry 鏡像。你將推送(Push)一個鏡像到這個 Registry 服務器,然后再從該 Registry 中拉取(Pull)同一個鏡像。

$ tree.├── docker-compose.yml├── kibana.yml├── node1│ └── es1.yml├── node2│ └── es2.yml└── node3 └── es3.yml3 directories, 5 files

首先docker-compose.yml并沒有args這個標簽,所以不支持 docker-compose啟動格式是:docker-compose[-f=<arg>.][options][COMMAND][ARGS.],也就是說args是加在docker-compose啟動命令中的

編排文件

主要的編排文件是 docker-compose.yml

直接使用docker-compose讀取yml配置就可以啟動容器了 docker-compose-f(你的docker-compose.yml完整路徑)up 就可以啟動了

version: "2.1"services: es-node1: image: docker.elastic.co/elasticsearch/elasticsearch:6.7.0 hostname: es-node1 expose: #不會將端口暴露給容器外應用 - "9001" ports: #將端口暴露到宿主機中 - "9200:9200" - "9300:9300" volumes: - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node1/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml environment: - cluster.name=es-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms256m -Xmx256m" ulimits: memlock: soft: -1 hard: -1 networks: es-cluster-network: ipv4_address: 172.21.0.10 es-node2: image: docker.elastic.co/elasticsearch/elasticsearch:6.7.0 hostname: es-node2 expose: #不會將端口暴露給容器外應用 - "9002" ports: #將端口暴露到宿主機中 - "9201:9201" - "9301:9301" volumes: - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node2/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml environment: - cluster.name=es-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms256m -Xmx256m" ulimits: memlock: soft: -1 hard: -1 networks: es-cluster-network: ipv4_address: 172.21.0.11 es-node3: image: docker.elastic.co/elasticsearch/elasticsearch:6.7.0 hostname: es-node3 expose: #不會將端口暴露給容器外應用 - "9003" ports: #將端口暴露到宿主機中 - "9202:9202" - "9302:9302" volumes: - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node3/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml environment: - cluster.name=es-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms256m -Xmx256m" ulimits: memlock: soft: -1 hard: -1 networks: es-cluster-network: ipv4_address: 172.21.0.12 kibana: image: docker.elastic.co/kibana/kibana:6.7.0 ports: - "5601:5601" volumes: - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/kibana.yml:/usr/share/kibana/config/kibana.yml environment: - ELASTICSEARCH_URL=http://es-node1:9200 networks: - es-cluster-networknetworks: es-cluster-network: driver: bridge ipam: driver: default config: - subnet: 172.21.0.0/16 gateway: 172.21.0.1

ES配置文件只選取了一個示例如下:

cluster.name: elasticsearch-clusternode.name: es-node1network.bind_host: 0.0.0.0network.publish_host: 172.21.0.10http.port: 9200transport.tcp.port: 9300http.cors.enabled: truehttp.cors.allow-origin: "*"node.master: true node.data: true discovery.zen.ping.unicast.hosts: ["172.21.0.10:9300","172.21.0.11:9301","172.21.0.12:9302"]discovery.zen.minimum_master_nodes: 2

Kibana的配置文件如下

server.name: kibanaserver.host: "0"elasticsearch.hosts: [ "http://es-node1:9200", "http://es-node2:9201", "http://es-node3:9202" ]xpack.monitoring.ui.container.elasticsearch.enabled: false

啟動命令

配置文件準備好之后,就可以啟動集群了

$ docker-compose up -d

啟動過程可能會比較慢,通過命令行可以看到集群節點

$ curl http://localhost:9200/_cat/nodes172.21.0.12 51 96 29 6.53 6.43 3.72 md - es-node3172.21.0.11 47 96 30 6.53 6.43 3.72 mdi - es-node2172.21.0.10 49 96 30 6.53 6.43 3.72 mdi * es-node1

后續使用過程中可以通過 docker-compose 命令啟動、停止服務,如果不想保留相關的實例,可以使用 docker-compose down 關閉并刪除容器。

參考資料

elasticsearch document

docker-compose自定義網絡,固定容器ip地址

docker-compose ports和expose的區別

docker-compose up-d 出來是個容器。dockerfile build出來是個鏡像。dockerfile是自己定義自己的鏡像作用。docker-compose是指定鏡像的啟動文件,掛載目錄,環境變量等等內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • docker構建elk docker集群日志收集系統
  • docker 私有倉庫恢復實例詳解
  • 詳解如何使用docker快速部署elk環境(最新5.5.1版本)
  • docker daemon遠程連接設置詳解
  • centos7 安裝docker 解決啟動不了的問題
  • ubuntu14.04+docker的安裝及使用
  • docker-compose的使用示例詳解
  • 詳解docker compose 中可用的環境變量問題
  • docker 的java編譯環境構建詳細介紹
  • 詳細記一次docker部署服務的爬坑歷程
  • docker創建私有鏡像倉庫搭建教程
  • docker-compose和dockerfile的區別
  • docker-compose是不是從上到下創建容器的
  • docker compose 安裝后報錯
  • 如何在線安裝docker compose詳細步驟
  • 時速云的Pod和docker compose有什么區別?
  • Docker Compose啟動數據卷容器為什么只能啟動最后那一個
  • 如何安裝docker-compose
  • docker-compose.yml的配置問題
  • docker-compose.yml怎么用
  • 沒有docker-compose怎么辦
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全dockerhyper-vvmwarevirtualboxxenserverkvmqemuopenvzxencloudstackopenstack云計算技術云其它首頁服務器云和虛擬化dockerdocker-compose自定義網絡,固定容器ip地址docker構建elk docker集群日志收集系統docker 私有倉庫恢復實例詳解詳解如何使用docker快速部署elk環境(最新5.5.1版本)docker daemon遠程連接設置詳解centos7 安裝docker 解決啟動不了的問題ubuntu14.04+docker的安裝及使用docker-compose的使用示例詳解詳解docker compose 中可用的環境變量問題docker 的java編譯環境構建詳細介紹詳細記一次docker部署服務的爬坑歷程docker創建私有鏡像倉庫搭建教程docker 清理命令集錦docker 給運行中的容器設置端口映ubuntu14.04+docker的安裝及使用docker獲取鏡像報錯docker: errodocker.service啟動失敗:unit ndocker容器如何優雅的終止詳解centos7 安裝docker 解決啟動不了詳解docker國內鏡像拉取和鏡像加淺談docker-compose網絡設置之nedocker如何固定ip設置的方法使用phpstorm對docker中的腳本進行debug的docker 數據卷,數據卷容器詳細介紹如何通過vs2017的dockerfile來生成鏡像docker容器內不能聯網的6種解決方案docker搭建php+nginx+swoole+mysql+redisdocker容器跨主機通信中直接路由方式詳解詳解使用docker容器來源碼編譯etcd詳解使用 docker 構建 lnmp 環境docker配置容器位置與小技巧總結docker學習筆記之weave實現跨主機容器互聯
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果