#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
файлы создаются как каталоги, если они еще не существуют.