[TOC]
现场
执行脚本
1 2 3 4 5 6 7 8 9
| docker container rm -f user_service docker run -d --restart=always\ --net=host\ --name user_service\ -v `pwd`/config/:/etc/config/\ -v /var/log/xiaoduo:/var/log/xiaoduo\ -v `pwd`:/app\ -w /app\ registry.cn-hangzhou.aliyuncs.com/xiaoduoai/centos7 /app/user_service -c /etc/config/user_service.toml
|
报错
1
| /usr/bin/docker-current: Error response from daemon: service endpoint with name user_service already exists
|
首先明白报错信息的意思,具有名称用户服务的服务端点已经存在,指的是user_service这个入口名已经存在了。但是我的脚本明明是已经删除了user_service这个容器了的。而且这个脚本之前一直都是稳健运行的。
问网友
https://www.jianshu.com/p/bf7ae7919473
网友大概就是知道怎么解决,但是为什么会产生这个原因,并不知道,而且解决得相对有点粗放。
解决
在我的启动脚本中增加清理容器网络占用的指令
1 2 3 4 5
| docker network disconnect --force host user_service
docker network inspect host | grep -A 5 -B 3 apigate
host表示容器启动时指定的网络模式(有4中网络模式,Bridge, Host, Containe, None这里不展开了)
|
修改后的完整指令如下
1 2 3 4 5 6 7 8 9 10 11 12 13
| docker stop user_uservice docker container rm -f user_service
docker network disconnect --force host user_service
docker run -d --restart=always\ --net=host\ --name user_service\ -v `pwd`/config/:/etc/config/\ -v /var/log/xiaoduo:/var/log/xiaoduo\ -v `pwd`:/app\ -w /app\ registry.cn-hangzhou.aliyuncs.com/xiaoduoai/centos7 /app/user_service -c /etc/config/user_service.toml
|
回顾
涉及到指令
- 清理此容器的网络占用:docker network disconnect –force 网络模式 容器名称
- 检查是否还有同名容器占用: docker network inspect 网络模式 | grep 容器名称
TODO
没有解决的问题:不知道是什么原因造成的,之前的指令在其他机器上都还是正常运行的。所以彻底解决得方案没有找到。