Docker核心概念详解:镜像、容器、仓库三分钟彻底搞懂
引言
理解 Docker 的核心概念是掌握容器技术的基础。镜像、容器、仓库是 Docker 的三个核心概念,本文将深入解析这些概念,通过大量实例让你在短时间内彻底搞懂 Docker 的工作原理。
一、Docker 三大核心概念
1.1 概念关系图
核心关系:
- 镜像(Image):只读模板,用于创建容器
- 容器(Container):镜像的运行实例
- 仓库(Registry):存储和分发镜像的地方
二、镜像(Image)
2.1 什么是镜像?
镜像是一个只读的模板,包含了运行应用所需的所有内容:
- 操作系统
- 运行时环境
- 应用程序
- 配置文件
- 依赖库
2.2 镜像的分层结构
特点:
- 镜像由多个只读层组成
- 使用 UnionFS 技术实现
- 层可以共享和复用
- 修改时创建新层,不改变原层
2.3 镜像操作命令
# 查看本地镜像dockerimagesdockerimagels# 搜索镜像dockersearch nginx# 拉取镜像dockerpull nginx:latestdockerpull nginx:1.21# 查看镜像详情dockerinspect nginx# 查看镜像历史dockerhistorynginx# 删除镜像dockerrmi nginxdockerimagermnginx# 删除所有未使用的镜像dockerimage prune -a2.4 镜像标签(Tag)
# 镜像命名格式[仓库地址]/[用户名]/镜像名:标签# 示例docker.io/library/nginx:latest registry.example.com/myapp:v1.0.0 myapp:latest常用标签:
latest:最新版本(默认)v1.0.0:语义化版本alpine:基于 Alpine Linux 的轻量版本
2.5 镜像大小对比
| 镜像 | 大小 | 说明 |
|---|---|---|
| alpine | ~5MB | 最小 Linux 发行版 |
| ubuntu:latest | ~70MB | 标准 Ubuntu |
| nginx:alpine | ~25MB | Nginx + Alpine |
| nginx:latest | ~130MB | Nginx + Debian |
| node:alpine | ~120MB | Node.js + Alpine |
| node:latest | ~900MB | Node.js + Debian |
三、容器(Container)
3.1 什么是容器?
容器是镜像的运行实例,具有以下特点:
- 基于镜像创建
- 可以启动、停止、删除
- 有独立的文件系统
- 有独立的网络和进程空间
- 可以修改(通过可写层)