- 镜像和容器是Docker等容器技术中的两个基本概念,它们之间存在本质的区别:
- Docker镜像:
镜像是一个只读的模板,包含了创建容器所需要的文件系统及其内容和配置。它等同于面向对象编程中的类。
镜像用于创建容器的实例,通常一个镜像可以创建多个容器。
镜像可以通过Dockerfile定义并使用docker build命令构建,也可以从远端仓库如Docker Hub拉取。
镜像是分层的,每做一次修改就会创建一个新的层,这有助于资源共享和重用。 - Docker容器:
容器是从镜像创建的运行实例。它等同于面向对象编程中由类实例化的对象。
容器在镜像的基础上添加了一个可写层,容器中的程序在运行时可以在这个可写层上进行读写操作。
容器的核心是隔离和沙箱机制,确保运行环境的一致性和安全性。
你可以启动、停止、移动或删除一个容器,而这些操作不会影响镜像。
容器可以进入和退出,但是一旦删除,其中的更改(除非进行了特定的数据卷挂载操作)将会丢失。
- 简单来说,镜像是静态的定义,包含了创建容器所需的所有信息,而容器是镜像的动态运行实例。可以将镜像理解为应用的"源代码",而容器则是这段代码"编译"并运行后的程序。当你运行镜像时,Docker会在镜像的最顶层添加一个可写层,所有运行时的变化都会记录在这个层上。这样,使用同一个镜像,你可以运行多个容器,它们之间互相隔离,运行各自的应用实例。