Как обновить elasticsearch в образе ELK Docker

#docker #elasticsearch #elk

#docker #elasticsearch #elk

Вопрос:

Я установил образ elk docker на сервер Linux, используя следующую команду:

 sudo docker pull sebp/elk
  

При этом извлекается последняя версия образа elk docker, которая равна 7.8.0, и каждая служба в стеке ( elasticsearch , logstash и kibana ) также имеет версию 7.8.0.

Мне нужно обновить elasticsearch до 7.9.0 по соображениям безопасности. Как я могу это сделать, продолжая использовать sebp/elk образ docker?

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

1. Это хорошая причина для запуска Elasticsearch, Logstash и Kibana в отдельных контейнерах, возможно, управляемых Docker Compose; тогда вы могли бы просто обновить версию образа для конкретного программного обеспечения, которое вам нужно. Вам нужно будет получить файл Dockerfile этого образа, обновить установленные в нем версии и повторно запустить docker build , чтобы обновить его.

2. Кроме того, младшая версия Kibana должна соответствовать младшей версии Elasticsearch, если вы обновите elasticsearch до 7.9.X, вам также необходимо обновить Kibana до 7.9.X .

3. У меня сработало просто изменение версии изображения и перезапуск с помощью «docker-compose up`. Осторожно, это не официальная рекомендация по обновлению.

Ответ №1:

Elk создает пакет и запускает все 3 службы и связывает их по умолчанию. При такой настройке вы не можете разделить и обновить только elasticsearch.

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

Образец docker-compose для вашей справки:

 version: '3.2'

services:
  elasticsearch:
    image: IMAGE_GOES_HERE
    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:
    image: IMAGE_GOES_HERE
    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
    ports:
      - "5000:5000/tcp"
      - "5000:5000/udp"
      - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch

  kibana:
    image: IMAGE_GOES_HERE
    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

networks:
  elk:
    driver: bridge

volumes:
  elasticsearch:
  

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

1. Я получаю эту ошибку: > ОШИБКА: для elasticsearch не удается запустить службу elasticsearch: сбой создания среды выполнения OCI: container_linux.go: 344: запуск процесса контейнера вызван «process_linux.go: 424: инициализация контейнера вызвана «rootfs_linux.go: 58: монтирование \»/ local / home / user / elasticsearch / config / elasticsearch.yml \» в rootfs \»/ net/server/…/объединенный\» в \»/ net /server/…/usr/ share/elasticsearch/config/ elasticsearch.yml \» вызванный \»не каталог \»»»: неизвестно: Вы пытаетесь смонтировать каталог в файл (или наоборот)?

2. Кажется, что .yml файлы создаются как каталоги, если они еще не существуют.