Я пытаюсь предоставить контейнерам статический IP-адрес. Я понимаю, что мне нужно создать собственную сеть. Я создаю его, и интерфейс моста работает на хост-машине (Ubuntu 16.x). Контейнеры получают IP из этой подсети, но не статические, которые я предоставил.
Вот мой docker-compose.yml:
version: '2'
services:
mysql:
container_name: mysql
image: mysql:latest
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
ports:
- "3306:3306"
networks:
- vpcbr
apigw-tomcat:
container_name: apigw-tomcat
build: tomcat/.
ports:
- "8080:8080"
- "8009:8009"
networks:
- vpcbr
depends_on:
- mysql
networks:
vpcbr:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
gateway: 10.5.0.1
aux_addresses:
mysql: 10.5.0.5
apigw-tomcat: 10.5.0.6
Контейнеры получают 10.5.0.2 и 10.5.0.3 вместо 5 и 6.
docker
docker-compose
Ченчук
источник
источник
Ответы:
Обратите внимание, что я не рекомендую фиксированный IP-адрес для контейнеров в Docker, если вы не делаете что-то, что позволяет выполнять маршрутизацию извне во внутреннюю сеть контейнеров (например, macvlan). DNS уже существует для обнаружения служб внутри контейнерной сети и поддерживает масштабирование контейнера. А за пределами контейнерной сети вы должны использовать открытые порты на хосте. С этим заявлением об отказе от ответственности вот нужный вам составной файл:
источник
Я столкнулся с некоторыми трудностями с переменной среды с настраиваемым именем (не с соглашением об именах / портах контейнера для KAPACITOR_BASE_URL и KAPACITOR_ALERTS_ENDPOINT). Если мы дадим имя службы в этом случае, он не будет разрешать ip как
Выше
http://[**kapacitor**]:9092
не разрешил быhttp://172.20.0.2:9092
Я решил проблемы со статическими IP-адресами, используя конфигурации подсетей.
источник