Dockerized приложение должно взаимодействовать с другими докерами через localhost - PullRequest
0 голосов
/ 21 мая 2018

У меня есть приложение, которое запускает Docker-контейнер и автоматизирует некоторые процедуры.Теперь я докеризировал это приложение, которое не может общаться с другими контейнерами через localhost.Я попытался установить --network host при запуске контейнера и теперь не смог получить доступ к упакованному веб-приложению через localhost :.

Есть указатели?

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

localhost не будет работать.Предположим, вы работаете с виртуальной машиной и пытаетесь общаться с хостом / другими виртуальными машинами, работающими на вашем компьютере.Если вы вызываете localhost с одной из виртуальных машин, это localhost только для этой виртуальной машины, но не для вашего хоста.Таким образом, вы не сможете общаться с одной виртуальной машины на другую, вызывая localhost.Docker работает так же в отношении localhost.У вас есть два варианта:

  1. Использование сети Если вы используете сеть, создайте сеть и добавьте все контейнеры в эту сеть.Это новый предложенный способ docker.

    docker network create <your-network-name>
    docker run --network <your-network-name> --name <container-name1> <image>
    docker run --network <your-network-name> --name <container-name2> <image>
    

    Затем используйте имя контейнера (container-name1), чтобы поговорить с этим сервисом из другого сервиса (container-name2).

  2. Используйте опцию --link

Или вы можете использовать опцию --link, которая является устаревшей системой для докера.В докерской документации сказано, что если у вас нет особых причин использовать, больше не используйте --link.

docker run --name <container1> <image>
docker run --name <container2> <image>

Вы можете использовать container1 для разговора с container2 и наоборот.Вы можете использовать эти имена контейнеров в таких местах, как хост БД и т. Д.

0 голосов
/ 19 июня 2018

Я понял это позже, после просмотра множества других документов.

Шаг 1: установите докер внутри контейнера.Добавлена ​​следующая строка в мой dockerfile

RUN curl -sSL https://get.docker.com/ | sh

Шаг 2: обеспечить отображение тома в команде docker run

-v /var/run/docker.sock:/var/run/docker.sock

Теперь команды Docker хостов доступны из моего текущего контейнера и без негоизменяя --network для текущего контейнера Docker, я могу получить доступ к другим контейнерам через localhost

0 голосов
/ 21 мая 2018

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

создать сеть: - создать сеть Docker имя сети

и затем в Dockerкоманда запуска добавить этот ключ --network = имя сети

...