繁体   English   中英

Docker Swarm覆盖网络上的端口转发

[英]Port forward on Docker Swarm overlay network

我有一个Flask和一个mysql服务在覆盖网络下运行,并且每个都发布一个端口(分别为8080和3306)。 这是对my-network的检查

"Containers": {
            "4698a46d9748b802c74d3eb3cd47c76b9c8ff9fb2aa954338be3ec0ca6fba028": {
                "Name": "mysql-app.1.bfoy8mz5ts9mb7jmuyaqy1ytu",
                "EndpointID": "4c229598a84bc2a3488c24cf15f870bbaa7c48a9b67801558bc9c6382f0f8445",
                "MacAddress": "02:42:0a:00:00:03",
                "IPv4Address": "10.0.0.3/24",
                "IPv6Address": ""
            },
            "4ca9811fe4e04d4ec9a8b0d887b7d971c7d6251e08702729487c2de531dc582f": {
                "Name": "flask-app.1.56j825gcgfrfvv2vkj6e65seu",
                "EndpointID": "260568e4f00aa596ed1fd2b68c51eaf9827d602f54d9d0573d6fcd1da038e899",
                "MacAddress": "02:42:0a:00:00:06",
                "IPv4Address": "10.0.0.6/24",
                "IPv6Address": ""
            }
        },

我可以使用10.0.0.3通过Flask连接到MySQL。 这不是保证的IP地址,因此无法手动设置。 我希望有一种方法可以连接到MySQL,而不必首先检查它的IP。

这是我当前用于创建服务的命令docker service create -p 3306:3306 --network my-network --replicas 2 -e MYSQL_ROOT_PASSWORD=password --name mysql-app mysql 我的假设是将端口发布到3306,将其转发到my-network然后我可以连接到my-network的网关。

DNSRR是docker群模式的关键概念: https ://docs.docker.com/engine/swarm/key-concepts/#load-balancing

因为您要使用--name mysql-app部署MySQL服务,并在同一网络--network my-network flask-app分配flask-app ,所以这两个服务只能通过它们的名称相互访问。 无需找出IP地址。

尝试

# create a test network
docker network create testnetwork

# start mariadb
docker run -d --name bettermysql --network testnetwork -e MYSQL_ROOT_PASSWORD=nomysql mariadb:latest

# start some other linux and ping mariadb by name
docker run -ti --network testnetwork alpine:3.7 /bin/sh
/ # ping bettermysql
PING bettermysql (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=1.661 ms
...

当以集群模式进行开发时,您想在docker network create命令中使用--attachable选项。 比起您可以使用普通docker容器( docker run ... )访问覆盖网络进行测试和调试。

TL; DR

flask-app配置MYSQL_HOST mysql-app用作MYSQL_HOST

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM