Docker镜像和容器有什么区别?

1230

使用Docker时,我们从一个基础镜像开始。我们启动它,进行更改,这些更改会被保存在不同的层中,形成另一个镜像。

因此,我最终拥有一个用于PostgreSQL实例的镜像和一个用于Web应用程序的镜像,对其进行的更改将继续存在。

什么是容器?


截至2022年,Docker已经几乎“死亡”。因此,问题和答案应该转化为更通用的形式,以符合OCI规范/镜像和容器定义。 - user3192295
9
比起OCI,更多的人知道什么是Docker。那么是否每个macOS相关问题都应该标记为“Darwin”呢? - btraas
32个回答

0
一个Docker镜像或者说容器镜像,通常是一个软件包,它将你的应用程序可执行文件、依赖项、配置和应用程序运行时封装成一个安全且不可变的单元。当我说应用程序可执行文件时,它因应用程序而异。例如,如果是Java应用程序,则可能是一个jar文件;对于Node应用程序,可能是一个js文件。同样,应用程序运行时取决于应用程序本身。对于Java应用程序,它将是JRE;对于Node应用程序,它是Node二进制文件。
您可以根据镜像清单文件(例如Dockerfile)中提供的说明构建您的镜像。当镜像构建完成后,您可以将其存储在本地或像hub.docker.com这样的容器镜像仓库中。
当您想要将镜像作为应用程序工作负载运行时,您需要启动一个需要您的镜像的容器。容器是您的镜像的运行时实例。
构建镜像、存储并将其作为容器运行,您需要一种名为容器运行时的软件,例如Docker。这些容器运行时遵循开放容器倡议提供的标准进行镜像创建和容器运行。

0

一张图片就像一个类,容器就像一个对象,这个类可以有无限数量的容器像这个图片一样运作。一个类是一个蓝图,本身并没有做任何事情。你必须在程序中创建对象的实例才能做出有意义的事情。图片和容器也是如此。你定义了你的图片,然后创建运行该图片的容器。它并不完全相似,因为对象是类的一个实例,而容器则像一个空洞的地方,你使用图片来构建一个运行主机,正好符合图片所说的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接