前言
学习 Docker,镜像、容器、仓库 是必须吃透的三大核心概念,三者构成了 Docker 完整的工作闭环:镜像用于构建、容器用于执行、仓库用于分发。本文结合原理图解、通俗讲解与实操示例,帮你彻底搞懂三者的定义、关系及底层分层机制,适合 Docker 入门进阶学习。
一、Docker 整体工作逻辑
Docker 的核心流转逻辑可以概括为:构建镜像 → 运行容器 → 分发仓库,三者关系如下:
- 镜像(Images):构建,静态模板;
- 容器(Container):执行,镜像运行后的动态实例;
- 仓库(Repositories):分发,存储、共享镜像的平台。
简单理解:镜像是模板,容器是运行起来的应用,仓库是存放模板的云端仓库。

二、Docker 镜像(Images):静态只读的应用模板
1. 什么是 Docker 镜像
容器能够取代传统虚拟机,核心原因就是 Docker 镜像技术 。Docker 镜像本质是一个压缩包,包含完整操作系统的文件、依赖、运行环境、应用程序,和本地开发 / 测试环境系统完全一致。核心特点:
- 分层架构:镜像由多层文件系统堆叠而成;
- 只读不可修改:镜像本身是静态文件,运行时不能直接修改;
- 一次构建,到处运行,是创建容器的基础模板。
2. 镜像分层原理(重点)
Docker 镜像采用分层存储机制,每一层只记录变更的文件,下层文件可被多个上层镜像复用,极大节省存储空间。
- 基础层:操作系统内核、基础系统(如 Ubuntu、CentOS);
- 中间层:安装的依赖、软件(如 VIM、Nginx);
- 顶层:应用程序及配置;
- 所有镜像层均为只读,不可修改。
举个例子:基于 Ubuntu 系统,依次安装 VIM、Nginx,就会形成多层镜像:

镜像修改逻辑:修改镜像内文件,不会直接覆盖原文件,而是在上层生成新文件,屏蔽下层旧文件;最终系统看到的是多层合并后的完整视图。

3. Dockerfile 构建镜像示例
Dockerfile 是构建镜像的脚本,每一条RUN命令会生成一层镜像。
冗余写法(生成 3 层镜像)
FROM centos
RUN yum -y install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
优化写法(合并为 1 层,减少镜像层数)
FROM centos
RUN yum -y install wget && \
wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" && \
tar -xvf redis.tar.gz
优化原则:尽量合并
RUN指令,减少镜像层数,缩小镜像体积。
三、Docker 容器(Container):镜像运行的动态实例
1. 镜像与容器的关系
- 镜像:静态,只读模板,相当于软件安装包;
- 容器:动态,镜像运行后的实例,相当于运行中的软件;
- 容器由只读镜像层 + 顶部可读写容器层组成。
2. 容器分层结构
容器在镜像的所有只读层之上,新增一层可读写的容器层:
- 镜像层:全部只读,共享复用;
- 容器层:唯一可读写,所有修改、新增、删除操作都在此层完成;
- 生命周期:容器消亡,容器层数据随之销毁。

3. 容器核心特性
-
可被创建、启动、停止、删除、暂停;
-
可理解为一个或一组相互依赖的服务;
-
启动容器核心命令:
后台运行容器,images为镜像名称/ID
docker run -d images
四、Docker 仓库(Repositories):镜像的存储分发平台
Docker 仓库是用来存放、共享、分发 Docker 镜像 的平台,分为公共仓库 和私有仓库两大类。

1. 公共仓库
- 官方仓库:Docker Hub (https://hub.docker.com),全球最大镜像仓库,拥有海量官方镜像(Nginx、MySQL、Redis 等),可免费下载;
- 国内公共源:阿里云镜像仓库、网易蜂巢等,用于加速国内镜像拉取。
2. 私有仓库
企业内部使用,存放自定义镜像,保障安全与内网访问,常见工具:
- Harbor(VMware 开源,企业级私有仓库);
- Docker Registry(Docker 官方简易私有仓库)。
五、总结
- 镜像:静态只读分层模板,构建应用环境,Dockerfile 用于构建镜像;
- 容器:镜像运行实例,拥有独立可读写层,实现应用运行;
- 仓库:镜像存储平台,分为公共 / 私有仓库,实现镜像分发共享。
三者配合,完美实现 Docker Build(构建)、Ship(分发)、Run(运行) 的核心流程,也是容器化部署的基础。