Как создать другое сопоставление портов по конечным точкам в Docker?

#docker #containers #devops #virtualization #docker-networking

#docker #контейнеры #devops ( разработка ) #виртуализация #docker-сеть

Вопрос:

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

Схема: введите описание изображения здесь

Я должен создать контейнер C2 и сетевой мост1. C2 должен быть доступен с моста по умолчанию через порт 80, а bridge1 — через порт 8000.

Я пробовал запускать C2 с опубликованным 80: 80

 docker network create -d bridge --subnet 10.0.12.0/24 bridge1
docker run -itd --name C2 -p 80:80 nginx
 

и подключите C2 к bridge1

 docker network connect docker1 C2
 

но тогда я не могу добавить сопоставление портов 8000: 80 для bridge1.

Вторая идея заключалась в создании сопоставления двух портов:

 docker network create -d bridge --subnet 10.0.12.0/24 bridge1
docker run -itd --name C2 -p 80:80 -p 8000:80 nginx
docker network connect docker1 C2
 

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

Я искал в документации, но ничего не нашел.

Комментарии:

1. Что приводит к этим точным требованиям? Внутри сети Docker, в качестве детали реализации, каждый контейнер будет иметь свой собственный IP-адрес, поэтому не должно быть конфликтов портов, и вы не можете переназначать порты в пространстве Docker.

2. Также, может быть, вам было бы интересно указать свое отображение docker-network декларативным способом в docker-compose.yml файле и использовать docker-compose ?

3. Большое вам спасибо за ваши ответы. Это домашнее задание, и именно поэтому у меня есть именно такие требования. Я не могу использовать compose, потому что это должен быть скрипт bash (команды терминала docker).