Intereting Posts
Docker daemon не может найти файл докеров Докер: рабочие рой, подключающиеся к серверу Как исправить запрет Filebeat, запрещенный при инициализации журналов сбора урожая Утилита Android SDK для установки в Docker не работает Когда объем докера становится доступным для сценария CMD? «Файлы заголовков или библиотеки не найдены для jpeg», устанавливая Pillow on Alpine Linux docker tool в контейнере jenkins (с установленным гнездом для док-станции) не находит джек-демона для подключения к Как решить ошибку при монтаже при запуске докеров? Проведите селен в хозяине с докером и Capybara Необходимо знать, как использовать Groovy для автоматизации сборки и запуска Docker Невозможно развернуть контейнеры докеров с разных хостов Почему docker монтирует файл с числовым значением в качестве каталога? Как запустить Docker cmds точно так же, как в файле Dockerfile Вход в домен Windows на контейнере Linux как настроить докер, чтобы ограничить диапазон портов для разворачивания контейнеров

Можно ли использовать несколько контейнеров Docker с использованием одного и того же хоста / порта?

Изучал использование Docker для проекта службы REST. Один из вопросов, который у меня есть, заключается в том, можно ли использовать Docker для запуска нескольких версий службы на одном и том же хосте / порту.

Например, я хочу иметь конечную точку в {myserver}: 8080 / v1 / и другую в {myserver}: 8080 / v2 /.

Если это вообще актуально, это будут изображения Docker на основе Java: 8, созданные с помощью java-фляги в Spring REST.

Возможно ли это с контейнерами Docker?

Вы можете запускать оба контейнера с использованием разных хост-портов и использовать haproxy / nginx / лак (собственный или внутри другого контейнера), прослушивающий порт хоста, и перенаправление в правый контейнер на основе URL-адреса.

Да, это возможно, если вы используете разные сетевые адреса для каждого повторяющегося порта, который вы слушаете.

Например, ваш хост имеет следующие IP-адреса, назначенные ему: 192.168.11.223 10.88.88.12

Вы можете прослушивать два отдельных контейнера: 192.168.11.223:80 10.88.88.12:80

Если вы посмотрите на синтаксис для запуска докеров:

-p=[] : Publish a container᾿s port or a range of ports to the host format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort Both hostPort and containerPort can be specified as a range of ports. When specifying ranges for both, the number of container ports in the range must match the number of host ports in the range. (eg, `-p 1234-1236:1234-1236/tcp`) (use 'docker port' to see the actual mapping) 

Это вопрос о том, как работают порты tcp, как работает докер. Таким же образом, что два приложения не могут привязываться к одному и тому же порту tcp, ни один из двух контейнеров докеров не может быть.

Как указывает @Sergei Rodionov, SO_REUSEPORT может использоваться, чтобы позволить нескольким процессам совместно использовать один и тот же порт tcp (и это можно указать при запуске приложения Java). Я не думаю, что это будет работать через контейнеры.

да, это возможно, если контейнеры используют другой IP-адрес. вы можете проверить IP-адрес контейнеров, используя команду ниже.

 docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container ID>