- Docker容器技术与运维
- 李树峰 钟小平编著
- 776字
- 2025-04-02 16:08:24
1.1.2 镜像与容器
Docker是软件开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。了解容器首先要了解镜像。
容器通过运行镜像(Image)来启动。镜像是一个可执行的软件包,其中包含运行应用程序时所需的一切资源——代码、运行时、库、环境变量和配置文件。一个镜像往往会基于另一个镜像进行一些额外的定制。例如,可以构建一个基于Ubuntu操作系统的镜像,其中安装Apache Web服务器和应用程序,并且包括运行应用程序所需的配置。可以创建自己的镜像,也可以使用由别人创建并发布到Docker注册中心的第三方镜像。
要自己构建镜像,通常需要创建一个Dockerfile文件来指定创建该镜像并运行它所需的全部步骤。Dockerfile文件中的每个指令会在镜像中创建一个层。当修改Dockerfile文件并重新构建该镜像时,只有那些变更过的层才会被重新构建。这就是与虚拟化技术相比,镜像是如此轻量、小巧和快速的部分原因。
容器是镜像可运行的实例,运行中的容器是位于内存中且有状态的镜像,本质上是一个用户进程。Docker的应用程序以容器的形式来部署和运行,一个镜像可以用来创建多个容器。使用容器来部署应用程序被称为容器化(Containerization)。默认情况下,容器使用沙箱机制,容器与主机和其他容器之间不会有任何接口,能够相互隔离。管理员可以控制如何将一个容器的网络、存储或其他底层子系统与另一个容器或主机进行隔离。
用户可以创建、启动、停止、移动或删除容器,也可以将容器接入一个或多个网络,或者将存储附加到容器,甚至可以基于容器的当前状态创建一个新的镜像。创建或启动容器时,容器通过其镜像和所提供的配置选项进行定义。容器被删除后,如果没有对其状态的任何变更提供持久性存储,则变更都会消失。
镜像是用于创建Docker容器的只读模板,容器是从镜像创建的运行时实例,容器与镜像之间的关系类似于面向对象编程中的对象与类之间的关系。从应用程序的角度看,镜像是应用程序生命周期的构建和打包阶段,而容器则是启动和运行阶段。