什么是镜像?

容器本质上是一个隔离的进程,那么它的文件和配置从哪里来?又如何共享这些环境呢?

这就是**容器镜像(Container Image)**的作用所在。

镜像是一个标准化的包,包含了运行容器所需的所有文件、二进制文件、库以及配置。

例如:

  • 对于一个 PostgreSQL 镜像,它会打包数据库的二进制文件、配置文件以及其他依赖项。

  • 对于一个 Python Web 应用的镜像,它会包含 Python 运行时、应用代码以及所有相关的依赖。


镜像的两大核心原则

  1. 镜像是不可变的(Immutable) 一旦创建镜像,就无法对其进行修改。你只能基于现有镜像创建新的镜像,或者在其基础上添加变更。

  2. 镜像由层(Layer)组成 每一层代表一组文件系统的变更,比如添加、删除或修改文件。


镜像的灵活性

基于上述两点原则,镜像可以被扩展或叠加。 例如:如果你要构建一个 Python 应用镜像,可以从官方的 Python 镜像开始,然后添加额外的层以安装应用所需的依赖,并加入你的代码。这样,你只需专注于应用本身,而不必重复处理 Python 运行时的基础部分。


如何找到镜像

Docker Hub 是默认的全球镜像仓库,用于存储和分发容器镜像。它包含超过 100,000 个由开发者创建的镜像,可以直接通过 Docker Desktop 搜索并运行这些镜像。


Docker Hub 提供的镜像种类

Docker Hub 上有一些由 Docker 支持和认证的高质量镜像,这些被称为 Docker Trusted Content,包括以下几种类型:

  1. Docker 官方镜像(Docker Official Images) 经过精心挑选的镜像库,是大多数用户的起点,也是 Docker Hub 上安全性最高的一批镜像。 (例如:Redis 和 Memcached 是一些流行的官方镜像,你可以快速下载并使用这些服务。)

  2. Docker 验证发布者(Docker Verified Publishers) 由商业出版商发布的高质量镜像,经过 Docker 验证。

  3. Docker 赞助的开源镜像(Docker-Sponsored Open Source) 由 Docker 赞助的开源项目发布和维护的镜像,属于 Docker 的开源支持计划。

此外,还有一些基础镜像(如 Node.js 的官方镜像),可以作为起点,供你在其基础上添加自己的文件和配置。通过容器镜像,开发者可以更高效地构建、分享和运行应用,从而专注于开发本身,避免处理重复的环境配置问题。

Last updated