docker 排錯:容器無法刪除掉 和 Endpoint 已經存在

使用 Docker 服務運行應用工程時,在代碼更新過程中,會涉及到容器的刪除和重新創建的過程。在操作過程中,發現 docker 服務無法正常刪除掉;以下記錄排錯和操作過程。

一、處理步驟1:刪除容器,重新創建

1、刪除容器

docker stop mysql
docker rm mysql

沒有提示錯誤消息;但是在message日誌文件中,提示“container kill failed because of 'container not found' or 'no such process”。再次使用docker ps 命令檢查,發現 mysql 工程容器還是存在。

2、強制刪除容器

docker rm -f 73cfe6fcb8aa

3、重新創建容器(失敗報錯 )

docker run -d --name=mysql mysql
報錯消息:
/usr/bin/docker-current: Error response from daemon: service endpoint with name mysql already exists

二、處理步驟2:刪除Endpoint,新建容器

Endpoint 可以理解爲虛擬網卡,是成對存在的;一端連接在容器內部的網絡沙盒,一端連接docker 服務的網絡驅動模式(可以理解爲虛擬交換機)。

1、首先我們要確定當前主機中有幾種交換機。

docker network ls

2、確定 Endpoint 是創建在哪個交換機上

docker network inspect host(network_name) |grep "container_name"

3、斷開網絡交換機和容器的連接

docker network disconnect --force host(network_name) mysql(container_name)

4、重新創建容器(成功)

docker run -d --name=mysql mysql

三、原因分析

在 Github 上找到了一些關於這個問題的說明,這個問題應該是 Docker服務的一個bug;可以重啓一下 Docker 服務暫時解決。
如果要徹底解決請將 Docker 服務的版本升級到1.18以上。

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