2

在我的开发环境中,我想模拟一个“网络农场”部署,其中我有几个“物理”节点运行多个服务,它们属于同一个网络。

所以,假设我有 5 个节点,每个节点将托管 1 mysql、 1nginx和 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

任何想法如何解决这个问题?

4

0 回答 0