我有一個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