Docker 从其他计算机访问Mysql容器

Docker 从其他计算机访问Mysql容器,docker,docker-compose,dockerfile,mysql-workbench,docker-swarm,Docker,Docker Compose,Dockerfile,Mysql Workbench,Docker Swarm,我有一个docker群集,在一组计算机[a、B、C]中运行,这些主机都运行centOS。我有自己的计算机运行Windows10[Z],安装了Mysql工作台。 如何从Z连接到在A、B或C上运行的mysql实例。 当我使用compose文件部署堆栈时,docker容器的名称会附加一个随机字符串,下面的命令 docker inspect --format '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(docker ps -a -q)

我有一个docker群集,在一组计算机[a、B、C]中运行,这些主机都运行centOS。我有自己的计算机运行Windows10[Z],安装了Mysql工作台。 如何从Z连接到在A、B或C上运行的mysql实例。 当我使用compose文件部署堆栈时,docker容器的名称会附加一个随机字符串,下面的命令

docker inspect --format '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(docker ps -a -q)
无法列出单个容器的ip。 它只列出了容器名称。 我确实在一个卷中维护了Mysql容器的数据,在compose文件中的端口映射如下所示

3306:3306

我可以做些什么来实现这一点?

您的三个mysql实例(M1、M2和M3)分别绑定到一个主机服务器(M1->A、M2->B、M3->C)?你把每一个的3306映射到它的宿主?您应该能够在端口3306上连接到A、B和C。但是,如果主人死了怎么办?您可以发布您的堆栈配置吗?很抱歉,前面不清楚,A是管理者,B和C是asre工作者,对于mysql容器,compose文件有一个限制[node.role==manager],因此,它将只在机器A上生成。没有此容器的副本。从workbench连接时,它需要两个ip:SSH主机名和MySQL主机名,因此SSH主机名将是机器A的ip,MySQL主机名将是127.0.0.1,即localhost?总之,您有一个MySQL容器(M)仅在端口映射为3306:3306的服务器上运行?将mysqlworkbench直接指向A:3306