обновление образа elk с помощью docker

#docker #docker-compose #elastic-stack

#docker #docker-создать #эластичный стек

Вопрос:

Я использую файл docker-compose для запуска службы elk, но я использую elk stack версии 7.5, и я хочу обновить его до 7.8 без остановки служб.Я пробовал docker-compose pull, но он не может извлечь последнее изображение из elasticsearch logstash и kibana, и я попробовал другой способ, вручную извлекая последнее изображение с помощью команды docker pull, а затем после того, как я обновил имя образа в docker-compose

docker-compose.yml

 version: "3.3"
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0
    container_name: elasticsearch
    environment:
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    volumes:
      - elasticsearch:/usr/share/elasticsearch/data
    secrets:
      - source: elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nproc: 20480
      nofile:
        soft: 160000
        hard: 160000
    logging:
      driver: "json-file"
      options:
        max-file: "9"
        max-size: "6m"
    restart: always
    ports:
      - 9200:9200
    networks:
      - esnet
  kibana:
    image: docker.elastic.co/kibana/kibana:7.5.0
    container_name: kibana
    depends_on:
      - elasticsearch
    restart: always
    logging:
      driver: "json-file"
      options:
        max-file: "9"
        max-size: "6m"
    secrets:
      - source: kibana.yml
        target: /usr/share/kibana/config/kibana.yml
    networks:
      - esnet
  logstash:
    image: docker.elastic.co/logstash/logstash:7.5.0
      container_name: logstash
    volumes:
      - ./logstash/pipeline:/usr/share/logstash/pipeline
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
      - ./logstash/config/jvm.options:/usr/share/logstash/config/jvm.options
      - ./logstash/plugins:/usr/share/logstash/plugins
    restart: always
    logging:
      driver: "json-file"
      options:
        max-file: "9"
        max-size: "6m"
    networks:
      - esnet

  

когда команда docker-compose pull не работает, я попробовал это

 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.8.0
docker pull docker.elastic.co/kibana/kibana:7.8.0
docker pull docker.elastic.co/logstash/logstash:7.8.0
  

после этого я внес некоторые изменения в свой файл docker-compose, я меняю версию изображения, чтобы команде docker-compose не требовалось время для загрузки изображения, поэтому я уже извлекаю последнее изображение

 version: "3.3"
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0

  

и, наконец, я использовал эту команду
перезапуск docker-compose

Комментарии:

1. Этого должно быть достаточно, чтобы изменить image: теги и повторно запустить docker-compose up -d ; Compose удалит и перезапустит измененные вами контейнеры, а остальные оставит в покое. Мне немного неясно, с какой конкретной проблемой вы столкнулись.

2. Привет, @DavidMaze, я тоже пробовал (docker-compose up -d) это, но это приведет к загрузке всего контейнера, я хочу обновить только elasticsearch kibana и службу logstash, я не хочу прерывать другие службы, такие как kafka zookeeper

Ответ №1:

Вы не можете этого сделать. Когда вы хотите обновить образ, вы должны запустить другой контейнер из нового образа, который вы хотите. Docker не поддерживает эту функцию. Вы можете обновить только вручную, изменив название изображения и снова вверх.