docker-compose и localhost [duplicate]

Все, что является sqrt (), является ложным или любое значение float является простым числом

0
задан AlexScalar 10 May 2018 в 17:45
поделиться

2 ответа

Изнутри контейнера localhost всегда ссылается на текущий контейнер. Он никогда не ссылается на другой контейнер, и он никогда не ссылается ни на что другое, работающее на вашей физической системе, которое находится не в одном контейнере. Обычно не рекомендуется делать исходящие подключения к localhost или настраивать localhost как ваш хост базы данных.

Из оболочки вашей хост-системы localhost может ссылаться на демоны, запущенные в вашей системе вне Docker , или портам, которые вы опубликовали с параметрами docker run -p.

Из другой системы localhost ссылается на систему, из которой она вызывается.

Что касается IP-адресов, localhost всегда 127.0.0.1, и этот IP-адрес является особым и всегда localhost и ведет себя так же, как указано выше.


Если вы хотите подключиться к контейнеру. ..

... из другого контейнера, лучший способ - убедиться, что они находятся в одной сети Docker (вы запустили их из того же файла DAMK, создающего YAML, вы сделали docker network create и затем docker run --net ... в той же сети) и использовать внутреннюю службу DNS Docker, чтобы ссылаться на них с помощью контейнера --name или его имени в файле Docker Compose YAML и номере порта внутри контейнера. Даже если цель имеет опубликованный порт с параметром docker run -p или Docker Compose ports:, используйте номер порта second (контейнер-внутренний).

... со стороны Docker, убедитесь, что вы запустили контейнер с опцией docker run -p или Docker Compose ports: и подключитесь к IP-адресу хоста хоста, используя первый номер порта из этой опции.

... из окна терминала или браузера на том же физическом хосте, а не в контейнере, в этом случае и только в этом случае localhost будет работать последовательно.


За исключением:

Если вы запустили контейнер с --net host, localhost ссылается на физический хост, и вы находитесь в сценарии «окно терминала на одном физическом узле».

Если вы не можете использовать несколько серверов в одном контейнере, вы можете использовать localhost для связи между ними.

Если вы работаете в Kubernetes и у вас есть несколько контейнеров в одном контейнере, вы можете использовать localhost для связи между ними. Между пакетами вы должны настроить службу перед каждым модулем / развертыванием и использовать DNS-имена формы service-name.namespace-name.svc.cluster.local.

1
ответ дан David Maze 15 August 2018 в 20:34
поделиться

Определенно, это будет ваш контейнер, если вы выполняете команду в контейнере.

/opt/lampp/bin/mysql -h localhost -u root -pThePassword

Если вы запустите эту команду внутри контейнера, она попытается подключить mysql, запущенный внутри контейнера.

1
ответ дан pl_rock 15 August 2018 в 20:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: