我们能否在Docker中创建多个容器来托管一个共享数据库?如果我们可以创建,那么在选择事件(例如)上会不会遇到多个实例的问题?
谢谢。
请允许我稍微改述一下您的问题。如果我有任何误解,请纠正我。
问:我能使用Docker
技术运行多个MySQL数据库实例吗?
答:简短回答:可以,因为Docker容器
只是您机器上的一个进程
。
问:如果我在同一主机上运行多个MySQL数据库实例,它如何知道我在哪个实例上执行查询
?
答:这完全取决于您为数据库客户端设置的连接字符串
。
每个数据库实例都将有一个相应的监听器
进程,绑定到主机的特定端口
。
现在,每个端口只能绑定到一个进程。这是一对一的关系。
如果您安装了10个SQL实例,它们将分别绑定到唯一的端口。因此,在连接字符串
中定义的端口号确定您将要访问的数据库实例。
需要注意的是,Docker 容器
是自包含的。你可以把它们看作传统的虚拟机
,但它们更加轻量级。也就是说,一个容器将有自己的网络基础设施,类似于您的物理主机。因此,为了让您的物理主机能够看到容器化的数据库,您需要端口转发
绑定端口。
如果上面的段落对您来说没有任何意义,那么我建议您探索Docker的端口
或-p
选项。
参见:https://docs.docker.com/engine/userguide/networking/default_network/binding/