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以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值