Используйте статический IP для контейнера Docker для запуска веб-приложения в другой сети - PullRequest
0 голосов
/ 10 июня 2019

Я развернул демонстрационный веб-проект API на порту 8086. Я могу запустить его в своем локальном браузере, используя localhost: 8086 / api / controllername, а также используя IP-адрес локального компьютера, например: 192.0.0.0:8086/api/ controllername. Я попытался получить доступ к URL-адресу с другого компьютера в той же локальной сети, и я смог получить к нему доступ.

Но теперь я хочу получить к нему доступ с компьютеров других сетей (публично). Как я могу назначить статический IP, чтобы я мог использовать API с любого компьютера, независимо от сети? Я создал сеть, используя следующие команды

 docker network create --driver bridge --subnet 172.18.0.0/16 -- gateway=172.18.0.1 IPStatic

и

 docker network connect --ip 172.18.0.2 IPStatic Containerid.

Но не удается получить доступ к API, используя 172.18.0.2:8086/api. Я что-то пропустил? Я использую asp.net core web api, и я довольно новичок в Docker.

1 Ответ

0 голосов
/ 10 июня 2019

Для этого вы всегда используете IP-адрес хоста так же, как если бы вы запускали сервис за пределами Docker. Частные IP-адреса контейнера недоступны с других хостов (а на некоторых платформах даже недоступны извне Docker на том же хосте); обычно неправильно устанавливать их вручную или пытаться их найти.

Если особенно важно, чтобы эта служба имела свой собственный IP-адрес, вам необходимо попросить администратора сети назначить хосту дополнительный адрес. Параметр docker run -p может привязывать службу только к определенным сетевым интерфейсам или адресам. На хосте Linux я могу запустить

# Assign the alias address
ifconfig eth0:0 192.0.0.2

# Run the service bound to only this interface
docker run -p 192.0.0.2:80:8080 ...

Возможно, вам придется перенастроить другие службы, чтобы не прослушивать этот новый интерфейс. Для сервисов Docker вы должны использовать ту же опцию docker run -p для привязки только к первичному интерфейсу хоста и к локальному хосту (127.0.0.1); Конфигурация для не-Docker сервисов является специфической для сервиса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...