Благодаря приведенным выше ответам мне удалось решить мою проблему.
Любой, кто разбирается в основах докерских сетей и просто хочет, чтобы решение могло полностью проигнорировать этот ответ.
Я пишу этот ответ для тех, кто, возможно, только начинает докер и не имеет четкого понимания сетей докеров.
Проблема: Связь между различными докерамиконтейнеры.
Чтобы установить связь между n различными контейнерами в Docker, нам нужно сначала понять, как работает сеть Docker:
- Всякий раз, когда мы устанавливаем Docker на наш хост, виртуальный интерфейс / мост docker0 являетсясоздано.По сути, это мост Virtual Ethernet, который автоматически связывается с любыми другими сетевыми интерфейсами, подключенными к нему.
- Интерфейс Docker 0 имеет IP-адрес, скажем, 172.0.0.x.
- Последующие подсети контейнеров с этого IP-адреса.
- Поэтому любая связь между контейнерами может происходить либо через докерский мост, либо с использованием частного IP-адреса хоста.
Приведенная выше диаграмма может помочь вам лучше понять ее.
Docker0: Интерфейс Docker0 с IP.
Теперь, чтобы войти в команды:
Используйте эту команду для получения IP-адреса контейнера:
Как получить IP-адрес контейнера Docker от хоста?
docker inspect -f '{{range .NetworkSettings.Networks}} {{. IPAddress}} {{end}} 'container_name_or_id
SQL-контейнер:
запуск Docker --name mysql55c -p 4500: 3306 -e MYSQL_ROOT_PASSWORD = root -e MYSQL_DATABASE = db_ngen -d mysql: 5.5
Приведенная выше команда создает контейнер с именем mysql55c с подключением по ip из netcker0.
Контейнер Golang
Docker run -w / go / src / app -it -d - имя golangapp --link mysql55c: db -v $ (pwd): / go / src / app golang bash
Приведенный выше контейнер создает контейнер с именем golangapp.
Важная вещь, которую необходимо соблюдать, - это команда --link
.
ЭтоКоманда позволяла обоим контейнерам обнаруживать друг друга.
Но после того, как была введена функция Docker Network, это можно сделать с помощью сети моста Docker по умолчанию или пользовательских сетей.
Ip контейнера:
Теперь мы можем видеть, что мы можем связываться между контейнерами, используястандартная сеть Docker Bridge.
Для справки:
Оверлейная сеть
Определяемый пользователем мост
Мостовая сеть по умолчанию
Надеюсь, что вышесказанное поможет, не стесняйтесь поправлять меня, если я где-то ошибаюсь.
Спасибо:)