用Azure和Docker分离层

作为Docker(而不是Azure)的新手,我想了解在将Docker容器部署到Azure(我正在考虑使用Azure容器服务)时,应用程序的层级通常是分隔的。

例如,如果不使用Docker,我会在Web层/子网中放置一个虚拟机,并在数据库层/子网中放置一个虚拟机,并相应地设置NSG规则。

Docker是如何实现的,我将Docker部署到多个子网,还是只有一个子网说,我部署所有的容器,然后以某种方式设置这些容器之间的networking规则?

谢谢

Docker Swarm模式在你的docker-compose文件中有networking定义的概念,它提供了细粒度的networking分割forms。 如果这还不够,那么你可以在不同的网段中运行不同的Docker实例,并使用非群集机制来find对方。

这是如何实现与Docker,我将部署到多个子网,或者我只是有一个子网说。

在Azure容器服务中,如果我们selectkubernetes,Azure将为主节点创build多个子网。
容器使用集群IP (与Azure虚拟机IP不同)地址与其他容器进行通信,如果我们希望这个容器可以从互联网访问,我们可以使用Azure的公共负载平衡器将这个容器暴露给Internet,然后使用这个公共IP地址从互联网上访问它。 此Vnet中的Azure虚拟机无法与容器进行通信。

因此,如果我们select了kubernetes,我们可以创build多个容器作为数据库服务器,创build另一个容器作为web服务器,将web容器连接到数据库容器,然后将这个web容器展示给Internet,这样就可以访问这个容器web通过Azure负载平衡器公共IP地址。 Web容器和数据库容器在一个容器中 ,不同的容器与不同的容器CIDR。

Kubernetes是一个开源的生产级容器编排器工具,下图显示了kubernetes如何在Azure上工作:

在这里输入图像说明

如果要使用docker来部署多个容器,我们应该devisenetworking,不同的子网,不同的桥接networking等等。 最方便的方法是使用容器编排器工具,如kubernetes,swarm或DC / OS。