据我所知,有一个Docker Server托管应用程序的图像(容器)。然后我可以将这些图像部署到我想要的任何基础设施,无论是本地还是云。我是对的吗?
假设此图
如果我修改了应用程序,只需在Docker Server中修改它们就足够了,然后更改会自动转移到已部署的容器吗?或者我是否需要修改每个实例?
答案 0 :(得分:4)
Docker镜像与Class相当。 Docker容器与Object相当。容器是图像的实例。
您可以从同一张图片中运行20个容器。所有20个容器都是相同的(尽管您可以将环境变量传递给每个容器以修改行为)。
图片包含服务(例如网络服务器 - NGINX)
图片包含文件(例如NGINX将提供的HTML文件)
我们将此图片称为XXX
然后您可以从图像XXX运行一个容器,它实际上将在容器内启动NGINX - 将容器视为虚拟机。
图片的精彩之处在于它们可以被拉动,推送和标记(类似于git pull
和push
)。
所以现在我可以将图像推送到docker hub,然后从任何地方拉出该图像,然后从该图像运行容器。
现在部署我的Web应用程序非常快。我只是docker pull
它,运行一个容器并完成工作。必须在我部署的服务器上安装的唯一依赖项是Docker本身,不需要任何其他依赖。
我可以制作多张图片。例如,我可能有一个前端图像和一个后端图像。我可以为两个图像竖起一个容器,容器可以互相通话。这让我可以分开关注点。前端代码和相关软件位于一个容器中,后端代码和相关软件位于另一个容器中。
我可能希望在不同的服务器上运行多个前端容器,然后站起来负载平衡器以将流量定向到这些容器。我甚至可以将负载平衡器放在容器中!这非常适合扩展,只需确保您的前端容器是无状态的:)
请注意,如果您使用多个容器,请考虑将Docker Compose与Docker一起使用。 Docker Compose基本上只是一个YAML文件,它接受与命令行参数相同的参数。
Docker Compose提供了一些很好的功能,如docker-compose logs
,可以让你查看所有容器的日志。