当前位置: 首页 > 工具软件 > Docker-PHP > 使用案例 >

Docker - docker-compose安装ELK

楚奇逸
2023-12-01

概述

使用的是docker-compose方法安装elk组件,对这部分的内容进行一个知识上的补充,在这里把之前的Docker文章拿出来做个学习的索引,以方便刚刚接触的同学,那让我们开始吧。

docker-compose 基本使用

启动服务

docker-compose up //启动

守护进程方式,启动服务

docker-compose up -d //守护进程方式
docker-compose logs -f //持续动态查看

查看docker-compose启动的进程列表(需要在.yaml文件夹下执行)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RngdswPp-1653107532613)(https://note.youdao.com/yws/res/18608/WEBRESOURCE154daad4a5a9a66ef4c69f225b265055)]

清理后台已经终止运行的容器

docker-compose rm

docker-compose镜像构建和拉取、服务更新

在使用docker-compose构建之前要指定Docker-file文件,执行docker-compose build命令进行构建。

执行docker-compose pull对镜像执行拉取操作。

docker-compose重新加载镜像,执行docker-compose up -d --build命令进行构建。

docker-compose 网络

1.当你未指定网络时,docker-compose就会给你创建一个默认的网络,可以执行docker network ls里查看。

version: '2.2'
services:
  box1:
    image: imageName:version
    command: /bin/sh -c "while true;do sleep 3600;done"
  box2:
    image: imageName:version
    command: /bin/sh -c "while true;do sleep 3600;done"
ERROR: yaml.scanner.ScannerError: while scanning for the next token
found character '\t' that cannot start any token

# 产生上面的错误是因为文件里有使用tab键的地方,把它替换成空格就可以解决问题了

查看网络是否可以正常通信,ping 容器名字,查看网络的信息,执行 docker network inspect DRIVER名字

docker-compose 水平扩展

如果想对实例进行水平扩展,执行下面的命令:

docker-compose up -d --scale servericeName=3

当然我们也可以减少实例数量:

docker-compose up -d --scale servericeName=1

docker-compose 服务依赖和健康检查

服务依赖主要是使用关键字depends_on实现,官方demo如下:

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost"]
  interval: 1m30s
  timeout: 10s
  retries: 3
  start_period: 40s

docker-compose GitHub学习 文档

推荐一个GitHub上docker-compose的练习:https://github.com/dockersamples/example-voting-app

docker-compose 官方查询文档: https://docs.docker.com/compose/compose-file/

ElK docker-compose yaml文件

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.1.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
  logstash:
    image: logstash:7.1.0
    container_name: logstash7
    restart: always
    volumes:
      - /Users/stark/server/docker-es-7.1/logstash/logstash-springboot.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
    depends_on:
      - elasticsearch #kibana在elasticsearch启动之后再启动
    links:
      - elasticsearch:es #可以用es这个域名访问elasticsearch服务
    ports:
      - 4560:4560
    networks:
      - es7net    
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.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,es7_02
      - cluster.initial_master_nodes=es7_01,es7_02
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - es7data1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - es7net
  elasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
    container_name: es7_02
    environment:
      - cluster.name=geektime
      - node.name=es7_02
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.seed_hosts=es7_01,es7_02
      - cluster.initial_master_nodes=es7_01,es7_02
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - es7data2:/usr/share/elasticsearch/data
    networks:
      - es7net


volumes:
  es7data1:
    driver: local
  es7data2:
    driver: local

networks:
  es7net:
    driver: bridge

 类似资料: