Pet*_*fel 8 registration marathon docker consul
我正在用马拉松部署一个简单的hello world nginx容器,并且一切正常,除了我有6个不会从领事那里注销的容器。docker ps显示没有容器在运行。
我尝试使用/v1/catalog/deregister端点注销服务,但它们仍会返回。然后,我杀死了注册容器,并尝试再次注销。他们回来了。
我正在与
docker run -d --name agent-registrator -v /var/run/docker.sock:/tmp/docker.sock --net=host gliderlabs/registrator consul://127.0.0.1:8500 -deregister-on-success -cleanup
Run Code Online (Sandbox Code Playgroud)
有1个领事代理正在运行。
重新启动计算机(这是在本地vm上进行的单节点安装)不会使服务消失。
如何使这些容器消失?
使用http api删除服务是另一个更好的解决方案。在弄清楚如何使用https api之前,我只是想出了如何手动删除服务。
要使用http api删除服务,请使用以下命令:
curl -v -X PUT http://<consul_ip_address>:8500/v1/agent/service/deregister/<ServiceID>
请注意,您是三件事的结合:容器正在运行的主机的IP地址,容器的名称以及容器的内部端口(例如,对于Apache是80,对于js是3000,对于django是8000, ect)全部用colins分隔 :
以下是实际情况的示例:
curl -v -X PUT http://1.2.3.4:8500/v1/agent/service/deregister/192.168.1.1:sharp_apple:80
如果您想要一种简单的方法来获取ServiceID,则只需卷曲包含僵尸的服务即可:
curl -s http://<consul_ip_address>:8500/v1/catalog/service/<your_services_name>
这是一个名为someapp的服务的真实示例,该服务将返回其下的所有服务:
curl -s http://1.2.3.4:8500/v1/catalog/service/someapp
尝试切换到v5
docker run -d --name agent-registrator -v /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:v5 -internal consul://172.16.0.4:8500
| 归档时间: |
|
| 查看次数: |
4787 次 |
| 最近记录: |