我们可以创建多个容器来托管Docker中的单个共享数据库吗?如果我们可以创建它,我们是否会遇到选择事件上多个实例的任何问题(例如)?
谢谢。
答案 0 :(得分:1)
请允许我稍微解释一下你的问题。如果我误解了任何事情,请纠正我。
问:我可以使用Docker
技术运行MySQL数据库的多个实例吗?
答:简答:是,因为docker container
只是您计算机上的process
。
问:如果我在同一主机上运行多个MySQL数据库实例,它如何知道我在query
上执行的是哪个实例?
答:这一切都取决于您为数据库客户端设置的connection string
。
每个数据库实例都有一个相应的listener
进程,该进程绑定到主机的特定port
。
现在,每个端口只能绑定到进程。这是一对一的关系。
基本上,如果您安装了10个SQL实例,它们将分别绑定到一个唯一的端口。因此,您在connection string
中定义的端口号决定了您要与之交谈的数据库实例。
值得注意的是,docker containers
是自包含的。您可以将它们视为传统的virtual machine
,除了它们的重量更轻。也就是说,容器将拥有自己的网络基础架构,类似于您的物理主机。因此,为了让您的物理主机能够看到容器化数据库,您必须port-forward
绑定端口。
如果上面的段落对您没有任何意义,那么我建议您使用docker的ports
或-p
选项进行升技。
请参阅:https://docs.docker.com/engine/userguide/networking/default_network/binding/