Docker拉取ELK最新镜像和Elastalert版本冲突,需要拉取指定版本的镜像

因为docker 不加版本号直接拉取镜像,默认的是拉取最新的版本镜像,所以和旧版本的elastalert有版本冲突:

我们需要删除最新的镜像和容器,重新拉取指定版本的镜像。

 

 

1、如何查看一个docker镜像有哪些版本

要想查看镜像的版本和TAG,需要在docker hub查看

地址如下:https://hub.docker.com/r/library/

Docker拉取ELK最新镜像和Elastalert版本冲突,需要拉取指定版本的镜像_第1张图片

使用  docker pull sebp/elk:752  命令来拉取指定版本的镜像

2、在拉取新镜像之前,需要删除以前的镜像和容器

由于image被某个container引用(拿来运行),如果不将这个引用的container销毁(删除),那image肯定是不能被删除。

所以想要删除运行过的images必须首先删除它的container。

1)查看容器 (docker ps -a ):

可以看到sebp/elk镜像是被容器使用着的,删除容器:

2)删除容器(docker rm 容器ID)

3)删除镜像(docker rmi 镜像ID)

可以看到镜像被删除了

3、拉取新镜像

docker pull sebp/elk:752

Docker拉取ELK最新镜像和Elastalert版本冲突,需要拉取指定版本的镜像_第2张图片

 镜像已存在:

 

4、创建容器

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 514:514 -v /opt/elk-data/conf:/opt/conf  -v /opt/elk-data/logs:/opt/logs  -v /opt/elk-data/elasticsearch-data:/var/lib/elasticsearch  -it -d --name elk sebp/elk:752

 

常见问题:

1、docker: Error response from daemon: driver failed programming external connectivity on endpoint elk (09bdc2d1f8dbfa4cbd376868f877be697e5391a8c8caef5f319e0dfaaf561d08):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9200 -j DNAT --to-destination 172.17.0.2:9200 ! -i docker0: iptables: No chain/target/match by that name.

原因:

docker 服务启动的时候,docker服务会向iptables注册一个链,以便让docker服务管理的containner所暴露的端口之间进行通信

通过命令iptables -L可以查看iptables 链

在开发环境中,如果你删除了iptables中的docker链,或者iptables的规则被丢失了(例如重启firewalld),docker就会报iptables error例如:failed programming external connectivity … iptables: No chain/target/match by that name

要解决这个问题,只要重启docker服务,之后,正确的iptables规则就会被创建出来

 

 

 

 

 

 

你可能感兴趣的:(docker,CentOs,ELK)