#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 не поддерживает эту функцию. Вы можете обновить только вручную, изменив название изображения и снова вверх.