Docker是一種虛擬化技術(shù),可以將應用程序及其依賴庫打包至一個容器中,可以讓應用程序在不同的環(huán)境中運行,而不用擔心環(huán)境差異帶來的問題。
ELK是一種分布式日志管理系統(tǒng),由Elasticsearch、Logstash和Kibana三個組件組成。Elasticsearch是一個分布式的實時搜索和分析引擎,可以用于存儲和搜索大量的文檔,而Logstash可以采集、清洗和轉(zhuǎn)換所有不同來源的數(shù)據(jù),并將數(shù)據(jù)發(fā)送到Elasticsearch中。而Kibana是一個用戶界面,可以展示存儲在Elasticsearch中的數(shù)據(jù)。
// docker-compose.yml version: '3.3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0 environment: - discovery.type=single-node ports: - "9200:9200" volumes: - elasticsearch-data:/usr/share/elasticsearch/data kibana: image: docker.elastic.co/kibana/kibana:7.15.0 ports: - "5601:5601" depends_on: - elasticsearch logstash: image: docker.elastic.co/logstash/logstash:7.15.0 volumes: - ./config/logstash/config:/usr/share/logstash/pipeline/ ports: - "5000:5000" depends_on: - elasticsearch volumes: elasticsearch-data: driver: local
在docker-compose.yml文件中,我們通過定義三個不同的服務來創(chuàng)建ELK堆棧。在Elasticsearch服務中,我們使用了7.15.0版本的Elasticsearch鏡像,并通過設置discovery.type為single-node來配置Elasticsearch。此外,我們還將Elasticsearch的9200端口映射到主機上的9200端口,并將數(shù)據(jù)卷elasticsearch-data附加到容器。
在Kibana服務中,我們使用了7.15.0版本的Kibana鏡像,并將Kibana的5601端口映射到主機上的5601端口。此外,我們還通過depends_on關(guān)鍵字將Kibana服務依賴于Elasticsearch服務。
在Logstash服務中,我們使用了7.15.0版本的Logstash鏡像,并將Logstash的5000端口映射到主機上的5000端口。此外,我們還通過定義數(shù)據(jù)卷來將Logstash的配置附加到容器,并使用depends_on關(guān)鍵字將Logstash服務依賴于Elasticsearch服務。