Docker модифицировал контейнер узла, не подключенный или не видящий контейнер mongo db в оверлейной сети Docker Swarm - PullRequest
1 голос
/ 06 марта 2019

У меня есть сервис Docker Swarm, который использует mongodb, mongo-express и пользовательский образ узла.Я создал простой файл yaml для Docker, чтобы запустить их все вместе.

version: '3.1'

services:
  mongo:
    image: mongo:4.0.6-xenial
    environment:
      MONGO_INITDB_ROOT_USERNAME:
      MONGO_INITDB_ROOT_PASSWORD:

  mongo-express:
    image: mongo-express
    environment:
      MONGO_INITDB_ROOT_USERNAME:
      MONGO_INITDB_ROOT_PASSWORD:
    ports:
    - "8081:8081"

  backend:
    image: backend
    ports:
     - "2222:2222"

Теперь я знаю, что Docker Swarm автоматически создает сеть оверлеев по умолчанию среди всех узлов.Мой докер проверяет сеть отображает все контейнеры в сети.Я вижу, что сервер подключен с использованием localhost: 2222 и mongo-express с использованием localhost: 8081.

Моя проблема в том, что сервер не подключается, и при этом он даже не видит базу данных mongo.Я попытался ssh-ing в контейнер mongo-express, успешно отправил ping на localhost: 27017, затем успешно отправил pinging localhost: 2222.

Однако попытка ping / curl mongo-express или mongodb из внутреннего контейнера ничего не дает,его как порты даже не видны.(localhost: 2222 работает, но localhost: 8081 или localhost: 27017 нет).

РЕДАКТИРОВАТЬ: я снова ssh'd в бэкэнд-контейнер после копирования IP-адрес Монго из Docker Inspect Network, а затем смоглисвернуться успешно 10.0.5.8:27017.Почему это не на локальном хосте?

1 Ответ

1 голос
/ 06 марта 2019

Каждый контейнер имеет свой IP-адрес.Это подразумевает, что в док-контейнере localhost ссылается на себя.Вот почему вы не можете ожидать получения IP-адреса контейнера mongo из контейнера mongo-express с помощью localhost.

Docker compose and swarm предоставляет нам удобный способ адресации контейнеров по их имени службы , как определено в файле docker-compose.yml.

Итак, из *Контейнер 1009 * mongo-express , подключитесь к Монго, используя mongo:27017.

...