Я пытаюсь подключиться из контейнера docker к серверу ES на виртуальной машине. На виртуальной машине работает CentOS, и я установил ES, следуя инструкциям прямо с веб-сайта ES. У меня он запущен, и я могу использовать команды curl
, чтобы убедиться, что он работает. Я также могу использовать библиотеку ES python для подключения. Однако, когда я пытаюсь подключиться из своего приложения docker, оно не устанавливается. Я смог имитировать c среду docker на моем локальном компьютере; то есть приложение docker могло подключиться к локально установленной ES на моем ноутбуке и, похоже, работало нормально. Я попытался установить мостовое соединение, используя docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 appnet
, и он работал на моем экземпляре ноутбука docker <-> ES, но не работал для экземпляра docker <-> ES CentOS. Я запустил это для тестирования на сервере CentOS:
docker container run --rm -it --net=appnet python:3.7-alpine sh
apk update && apk add iputils
ping 192.168.0.1
, и он может нормально пинговать; однако, когда я делаю pip install elasticsearch
, то пытаюсь подключиться к серверу ES:
from elasticsearch import Elasticsearch
es = Elasticsearch('192.168.0.1', port=9200)
es.ping()
я получаю ответ False
. Я могу успешно подключиться к ES на моем ноутбуке, используя тот же метод на моем ноутбуке, но не на сервере CentOS. Я читал много других тем, но в основном они говорят о контейнере ES <-> контейнер приложения, например: ссылка . Пожалуйста, дайте совет. Спасибо!