Узел Docker С Несколькими IP-Адресами - Переключение Между Ними

Моя сетевая конфигурация выглядит примерно так на хосте docker:

➜  server git:(master) ✗ ip addr3: ens9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000    link/ether 00:02:c9:bb:3b:f4 brd ff:ff:ff:ff:ff:ff    inet <IP Address>.18/29 brd <Default Gateway>.23 scope global ens9       valid_lft forever preferred_lft forever    inet <IP Address>.19/29 brd <Default Gateway>.23 scope global secondary ens9:0       valid_lft forever preferred_lft forever

В настоящее время у меня есть существующие службы, не связанные с докером, работающие на порту 443 на .18 IP-адрес, и мне нужно сохранить его таким. Однако, когда я открываю порт с помощью Dockerfile, он не запускается, потому что порт 443 уже используется хостом.

Есть ли способ глобально переключить IP-адрес, который Docker использует при открытии порта? Я не хочу устанавливать это вручную в файле конфигурации каждого контейнера, который, конечно, уже работает.

Вам не нужно предоставлять порты для доступа к определенным контейнерам в объявлении службы. На самом деле, вы можете объявить сеть внутри одного docker-compose.yml с другой подсетью следующим образом:

version: '2'networks:  custom-network:    ipam:      driver: default      config:        - subnet: 73.0.0.0/16          ip_range: 73.0.0.0/24          gateway: 73.0.0.254services:  simple-nginx:    image: nginx    networks:      custom-network:        ipv4_address: 73.0.0.10

И получить доступ к службе nginx, используя статический IP-адрес 73.0.0.10 для пользовательской сети.

Для получения дополнительной информации вы всегда можете проверить сетевые документы для docker-compose:https://docs.docker.com/compose/networking/

Или непосредственно в документах docker:https://docs.docker.com/engine/userguide/networking/