如何在Docker中组合网络主机和网桥?

时间:2020-06-28 16:21:26

标签: docker docker-compose

这里有大型Docker使用者。

我有一个docker-compose容器和另一个都在同一台机器上运行的docker容器。单个Docker容器是一个Apache pulsar服务器,而docker-compose容器包含:

  • 使用脉冲星消息并生成日志的JAR应用程序。
  • ELK堆栈应用程序,用于读取,处理和显示日志。

jar应用程序需要在localhost:6650上进行侦听,但我了解localhost:6650与主机localhost:6650不同。

我认为我需要做的是启用主机网络。但是同时,我需要为jar和ELK堆栈使用一个网桥,以便在docker-compose容器内彼此通信,并且我无法同时拥有网桥和主机网络。

所以我想知道如何配置它。

version: '3.2'

services:
  elasticsearch:
    build:
      context: elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./elasticsearch/config/elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: changeme
      # Use single node discovery in order to disable production mode and avoid bootstrap checks
      # see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
      discovery.type: single-node
    networks:
      - elk

  logstash:
    build:
      context: logstash/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./logstash/config/logstash.yml
        target: /usr/share/logstash/config/logstash.yml
        read_only: true
      - type: bind
        source: ./logstash/pipeline
        target: /usr/share/logstash/pipeline
        read_only: true
      - type: volume
        source: logs
        target: /usr/share/logstash/logs
    ports:
      - "5000:5000/tcp"
      - "5000:5000/udp"
      - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch

  kibana:
    build:
      context: kibana/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./kibana/config/kibana.yml
        target: /usr/share/kibana/config/kibana.yml
        read_only: true
    ports:
      - "5601:5601"
    networks:
      - elk
    depends_on:
      - elasticsearch

  pulsar_logging_consumer:
    build:
      context: pulsar_logging_consumer/
    volumes:
      - type: volume
        source: logs
        target: /logs
    ports:
      - "6500:6500"
    networks:
      - elk
    depends_on:
      - elasticsearch

networks:
  elk:
    driver: bridge

volumes:
  elasticsearch:
  logs:

0 个答案:

没有答案