Docker镜像和容器的区别
1. Docker镜像: Images和Container的概念就像类和对象,其中对象是类的实例,类是对象的蓝图。镜像在虚拟机和 Docker 中是不同的,在虚拟机镜像中,只是虚拟机在不同时间点运行的快照,但 Docker 镜像与它们有一点不同,最重要和主要的区别是 Docker 镜像是不可变的那就是他们不能改变。在现实世界中,软件在一台计算机上运行但由于环境不同而不能在其他计算机上运行的情况很多,这个问题完全由 docker images 解决,使用它,应用程序在每个人的 PC 上都可以正常运行。团队中的每个开发人员都将拥有完全相同的开发实例。每个测试实例与开发实例完全相同。您的生产实例与测试实例完全相同。此外,世界各地的开发人员可以在名为 Docker HUB 的平台上共享他们的 Docker 映像。
2. Docker容器:它们实际上是 Docker 虚拟机,但通常被称为 Docker Containers。如果 Docker 镜像是房屋的地图,那么 Docker Container 就是实际的构建房屋,或者换句话说,我们可以将其称为镜像的实例。根据官方网站,容器是图像的可运行实例。可以使用 Docker API 或 CLI 创建、启动、停止、移动或删除容器。可以将容器连接到一个或多个网络,将存储附加到它,甚至可以根据其当前状态创建新映像。应用程序使用一组容器运行,这些容器彼此相互隔离,也与运行它们的主机隔离,例如,如果后端应用程序在端口 8000 的 docker 容器上运行,并且您尝试从主机访问它,将无法访问,因为容器是自我隔离的,在这种情况下,必须在某个端口显式公开应用程序并将机器端口连接到该端口。
例子:
docker run --publish 8000:8080 --detach --name alias_name application_name:1.0
在这里,在容器中的 8080 端口运行的应用程序连接到主机的 8000 端口。现在它可以使用 URL localhost:8000 访问应用程序
Docker Image 和 Docker Container 的区别:
Docker镜像 | Docker容器 |
---|---|
Docker镜像是容器的蓝图。 | Docker容器是图像的实例。 |
图像是一个逻辑实体。 | 容器是一个真实世界的实体。 |
图像只创建一次。 | 使用 image 可以多次创建容器。 |
图像是不可变的。 | 仅当删除旧映像并使用新映像构建容器时,容器才会更改。 |
图像不需要计算资源即可工作。 | 容器需要计算资源才能运行,因为它们作为 Docker 虚拟机运行。 |
要制作 docker 镜像,必须在 Dockerfile 中编写脚本。 | 要从镜像制作容器,必须运行“docker run IMAGE”命令 |
Docker 镜像用于打包应用程序和预配置的服务器环境。 | 容器使用镜像提供的服务器信息和文件系统进行操作。 |
图像可以在 Docker Hub 上共享。 | 共享一个正在运行的实体是没有意义的,总是共享 docker 镜像。 |
Docker Image 没有这样的运行状态。 | 容器在创建并处于运行状态时使用 RAM。 |