gpt4 book ai didi

docker - 将Docker容器中创建的目录共享到另一个Docker容器?

转载 作者:行者123 更新时间:2023-12-02 20:29:50 24 4
gpt4 key购买 nike

这里急需大量帮助的Docker noob。有两个docker容器:simple-jarelksimple-jar在其容器内的/logs目录中生成日志文件,另一个应用程序elk需要访问这些日志文件以对其进行一些处理。

  • 如何共享/logs目录,以便elk Docker容器可以访问它?

  • 这是 simple-jar的Dockerfile:
    FROM openjdk:latest
    COPY target/pulsar_logging_consumer-1.0-SNAPSHOT-jar-with-dependencies.jar /usr/src/pulsar_logging_consumer-1.0-SNAPSHOT-jar-with-dependencies.jar
    EXPOSE 6650
    CMD java -jar /usr/src/pulsar_logging_consumer-1.0-SNAPSHOT-jar-with-dependencies.jar
    docker-compose.yml:
    version: '3.2'

    services:
    elk:
    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"

    simple-jar:
    build:
    context: pulsar_logging_consumer/
    volumes:
    - type: bind
    source: ./pulsar_logging_consumer/logs
    target: /usr/share/logs
    read_only: true
    ports:
    - "6500:6500"
    networks:
    - elk
    depends_on:
    - elasticsearch

    networks:
    elk:
    driver: bridge

    volumes:
    elasticsearch:

    最佳答案

    您有两种选择,
    1. 创建一个外部命名卷,该卷需要由您(用户)创建,否则将失败,请使用以下命令

    docker volume create --driver local \
    --opt type=none \
    --opt device=/var/opt/my_data_logs \
    --opt o=bind logs_data

    Select the volume type that fits, there are different types like nfs, ext3 and 3rd party plugins.


    在您的docker-compose.yml文件中
    版本“3”
    volumes:
    logs_data:
    external: true

    services:
    app:
    image: yourimage:latest
    ports:
    - 80:80
    volumes:
    - logs_data:/your/path
  • 共享卷:使用另一个(顶级卷)定义的卷启动容器
    版本“3”
     volumes:
    logs_data:
    external: true

    services:
    app1:
    image: appimage:latest
    ports:
    - 80:80
    volumes:
    - logs_data:/your/path:ro
    app2:
    image: yourimage:latest
    ports:
    - 8080:80
    volumes:
    - logs_data:/your/path:ro
  • 关于docker - 将Docker容器中创建的目录共享到另一个Docker容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62592524/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com