多主机上的Docker群集

多主机上的Docker群集,docker,Docker,实际上,我面临着集群之间的docker网络问题,其中节点部署在不同的主机上,为了解决这个问题,我使用了: docker run-idt--net=host mongodb/bin/bash 所以,在运行这个命令后,我发现容器的应用程序正在公开其端口并在主机IP上运行,这解决了我的问题,所有节点都能够与其他节点通信,但我想知道这样运行容器是一种正确的方式。。。。。?我们应该在生产中使用这种方式吗?不,您不应该在生产中使用--net=host。也就是说,这实际上取决于您的特定环境,也许您有其他安全措

实际上,我面临着集群之间的docker网络问题,其中节点部署在不同的主机上,为了解决这个问题,我使用了: docker run-idt--net=host mongodb/bin/bash
所以,在运行这个命令后,我发现容器的应用程序正在公开其端口并在主机IP上运行,这解决了我的问题,所有节点都能够与其他节点通信,但我想知道这样运行容器是一种正确的方式。。。。。?我们应该在生产中使用这种方式吗?

不,您不应该在生产中使用--net=host。也就是说,这实际上取决于您的特定环境,也许您有其他安全措施,可以让容器完全向主机开放运行。通过使用--net=host,您实际上只是将所有容器的端口映射到主机的端口。因此,您的mongodb端口暴露于任何可以访问主机的对象

您应该使用docker覆盖网络将运行在不同主机上的容器连接在一起


谢谢,但如何在不同主机服务器上创建群集时解决网络问题..示例是服务器A container1 IP为172.17.0.2/17,主机IP为192.168.x.x/24从容器内部我可以ping任何192.168.x.x网络,但从外部(主机除外)我无法ping container1。。。那么,我如何公开所有可访问的容器IP…?因此,在容器中,如果要公开特定端口,可以使用“-p:”,这将使容器的端口可以通过主机IP访问。因此,在您的示例中,假设您的容器使用端口28015,当您运行容器时,可以添加“-p 28015:28015”标志。然后,您可以通过主机IP 192.168.x.x/24:28015在该端口访问该容器。但是,如果您有一个docker网络,那么您可以在同一个docker网络上运行container_B和container_B,它们将能够相互访问,而不会将任何内容暴露给外部世界。不确定您的用例是否在多个主机服务器上运行的所有东西都在docker容器中。如果您混合使用docker容器和非容器化流程,那么您就不能真正遵循这条路线。您只需让容器将其端口暴露给主机即可使用。谢谢,这就是y m使用--net=host这解决了所有问题,在此配置中,我使用-v标志从容器中创建数据路径。我认为这可以用于生产。