我有一个docker,docker-compose和Consul安装在我的本地机器上。现在我想用注册人在Consul注册我的一项服务。我的服务Dockerfile是这样简单:无法注册到注册器的Docker服务
FROM php:7.0-apache
COPY code/ /var/www/html/
ENV SERVICE_ID=php
ENV SERVICE_NAME=php-apache
此外,我有领事运行。我可以像简单的命令检查:
$ curl -X PUT 'Hello world ' 127.0.0.1:8500/v1/kv/msg1
$ curl 127.0.0.1:8500/v1/kv/msg1?raw
Hello world
然后我开始registartor容器,下面的教程之一:
$ sudo docker run -d --name registrator-consul -v /var/run/docker.sock:/tmp/docker.sock \
-h jacobian-VirtualBox gliderlabs/registrator \
-ip 127.0.0.1 consul://127.0.0.1:8500
Wnen我运行上面的命令,我在控制台中一些大关键:
a25a48 ... 3b69
一切看起来都不错,因为我没有得到任何错误消息。然而,如果我检查
$ docker ps
我看不出有什么积极的图像
但在同一时间,如果我跑
$ docker ps -a
我看到在该行的顶部:
CONTAINER ID ... STATUS
##somecode## ... Exited(1) 52 seconds ago
这正是注册商领事容器,我不喜欢的是它退出。我自己并没有这样做,所以很奇怪它并不处于活动状态。
我终于建立和运行我的PHP,Apache的容器:
$ docker build -t php-apache.
$ docker run -d --name php-apache -p 8181:80 php-apache
在这一刻,一切都很正常。我甚至可以检查我的服务是否有效。所以,当我到localhost:8181时,我看到一个用Apache Web服务器呈现的不错页面。但。我的任务是检查是否在领事注册。我检查它像这样:
$ curl jacobian-VirtualBox:8500/v1/catalog/services | jq '.'
但作为此命令的结果,我认为这在控制台:
{
"consul": []
}
所以,没有服务注册。我的问题是为什么?我做错了什么,我该如何解决?谢谢!
给那些投票的人。请分享你对这个话题的想法。 – Jacobian
我误解了一些东西。起初,如果退出,你怎么可以向雅克比容器发出“卷曲”请求?第二,正如我看到领事登记员和你的apache服务器不相互沟通。为什么领事应该注册你的apache服务器? – Cortwave
整个问题在于注册器容器如何运行。我删除了'-ip 127.0.0.1'并添加了'--net = host',它开始工作。 – Jacobian