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

因爲docker 不加版本號直接拉取鏡像,默認的是拉取最新的版本鏡像,所以和舊版本的elastalert有版本衝突:

我們需要刪除最新的鏡像和容器,重新拉取指定版本的鏡像。

 

 

1、如何查看一個docker鏡像有哪些版本

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

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

使用  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

 鏡像已存在:

 

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規則就會被創建出來

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章