问题描述
我正在使用docker-compose文件运行elk服务,但是我正在运行版本 7.5 的elk堆栈,并且我想将其更新到 7.8 strong>没有停止服务。我尝试了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 restart
解决方法
您不能那样做。当您要更新映像时,必须从所需的新映像中运行另一个容器。 Docker不支持此功能。您只能通过更改图像名称然后再次向上的方式手动更新。