Подключение к многоузловому кластеру Couchbase на Docker в Java

Я создал первый сервер couchbase с помощью следующей команды:

docker run -d --name db1 -p 8091-8094:8091-8094 -p 11210:11210 couchbase

Второй сервер, который я создал без параметров для порта, потому что в противном случае Docker не сможет развернуть контейнер:

docker run -d --name db2 couchbase

Теперь я могу получить доступ к веб-консоли первого контейнера и создать кластер со вторым контейнером.

Проблема в том, что я не могу подключиться к созданному кластеру в Java, потому что порт 11210 не опубликован для второго контейнера. Я всегда получаю TimeoutException. Как я могу решить это?

2 ответа

Тебе придется expose порты для второго контейнера также, как вы это делали в первом контейнере (эти "параметры" являются отображениями портов).

Скорее всего, вы не смогли запустить второй контейнер с параметрами, потому что вы пытались отобразить те же порты, что и в первом контейнере; ака, вы пробовали эту команду:

docker run -d --name db2 -p 8091-8094:8091-8094 -p 11210:11210 couchbase

Это не будет работать, потому что вы не можете использовать порты, которые уже используются. Так что попробуйте сопоставить с другим набором портов. Например:

docker run -d --name db2 -p 9091-9094:8091-8094 -p 11210:11210 couchbase

Обратите внимание, как я сейчас использую 9091-9094 вместо 8091-8094, Вышеуказанная команда означает: map ports 8091-8094 from the container to ports 9091-9094 in the host, Любые запросы отправлены на 9091-9094на хосте будет перенаправлен на 8091-8094 внутри контейнера автоматически.

И тогда вы можете подключиться ко второму контейнеру, указав новые порты (9091-9094).

Я предлагаю вам проверить основы докера, особенно документацию для port mapping,

Наконец, я смог решить проблему, настроив виртуальные машины для серверов с бродягами. Таким образом, нет проблем иметь несколько экземпляров Couchbase с одинаковыми портами.

Другие вопросы по тегам