У меня есть докер, docker-compose и Consul, установленные на моем локальном компьютере. Теперь я хочу зарегистрировать один из своих сервисов в Консуле с помощью Регистратора. Dockerfile моего сервиса так же прост, как:
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
Затем я запускаю контейнер регистратора, следуя одному из руководств:
$ 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
Когда я запускаю указанную выше команду, я получаю в консоли большой ключ:
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. НО. Моя задача проверить, зарегистрирован он в Консуле или нет. Проверяю так:
$ curl jacobian-VirtualBox:8500/v1/catalog/services | jq '.'
Но в результате этой команды я вижу это в консоли:
{
"consul": []
}
Таким образом, никакие услуги не были зарегистрированы. Мой вопрос: почему? Что я сделал не так и как это исправить? Спасибо!
curl
запрос к контейнеру jacobian, если он вышел? Во-вторых, как я увидел, регистратор консула и ваш сервер apache не общаются друг с другом. Почему консул должен регистрировать ваш сервер apache? - person Cortwave   schedule 16.01.2017-ip 127.0.0.1
и добавил--net=host
, и все заработало. - person Jacobian   schedule 16.01.2017