localhost
не будет работать.Предположим, вы работаете с виртуальной машиной и пытаетесь общаться с хостом / другими виртуальными машинами, работающими на вашем компьютере.Если вы вызываете localhost с одной из виртуальных машин, это localhost только для этой виртуальной машины, но не для вашего хоста.Таким образом, вы не сможете общаться с одной виртуальной машины на другую, вызывая localhost.Docker работает так же в отношении localhost.У вас есть два варианта:
Использование сети Если вы используете сеть, создайте сеть и добавьте все контейнеры в эту сеть.Это новый предложенный способ 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).
Используйте опцию --link
Или вы можете использовать опцию --link
, которая является устаревшей системой для докера.В докерской документации сказано, что если у вас нет особых причин использовать, больше не используйте --link
.
docker run --name <container1> <image>
docker run --name <container2> <image>
Вы можете использовать container1
для разговора с container2
и наоборот.Вы можете использовать эти имена контейнеров в таких местах, как хост БД и т. Д.