В моей среде разработки я хочу смоделировать развертывание "веб-фермы", где у меня есть несколько "физических" узлов, работающих с несколькими службами, которые принадлежат одной и той же сети.
Итак, скажем, у меня есть 5 узлов, каждый узел будет содержать приложения 1 mysql
, 1 nginx
и 2 web
.И mysql
будет привязан к одному и тому же порту 3306
, но по разным ip-адресам.
Я начал записывать конфигурацию docker-compose
и остановился на самом первом шаге: Docker отказывается создавать новый ip в данной сети и привязывать mysql к порту на этом ip.
конфигурация, которую я пытаюсь использовать:
version: "3"
services:
node1_sql:
image: mariadb:10.0.33
restart: always
networks:
skkb:
ipv4_address: 10.9.2.2
ports:
- 10.9.2.2:3306:3306
environment:
- MYSQL_DATABASE=dbname
- MYSQL_ROOT_PASSWORD=password
volumes:
- ./sql_data/1:/var/lib/mysql
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
networks:
skkb:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.9.2.0/24
Когда я пытаюсь сделать docker-compose up
, я получаю следующую ошибку:
Creating network "node-r_skkb" with driver "bridge"
Creating node-r_node1_sql_1 ... error
ERROR: for node-r_node1_sql_1 Cannot start service node1_sql: driver failed programming external connectivity on endpoint node-r_node1_sql_1 (24a8412b80ebc95f5b15f5d4ea5281639d6914f312f525cf8803ed5179b906a7): Error starting userland proxy: listen tcp 10.9.2.2:3306: bind: cannot assign requested address
ERROR: for node1_sql Cannot start service node1_sql: driver failed programming external connectivity on endpoint node-r_node1_sql_1 (24a8412b80ebc95f5b15f5d4ea5281639d6914f312f525cf8803ed5179b906a7): Error starting userland proxy: listen tcp 10.9.2.2:3306: bind: cannot assign requested address
ERROR: Encountered errors while bringing up the project.
Если я пытаюсь привязаться к 10.9.2.1
,это работает без проблем.Поэтому мне кажется, что он не может создать новый IP-адрес, настроенный как ipv4_address: 10.9.2.2
Есть идеи, как это исправить?