Docker三大核心组件详解:镜像、容器、仓库的协作关系
技术架构概览
Docker容器化技术的核心能力由三个相互关联的组件构成:
- **镜像(Image)**:提供可复用的应用环境模板
- **容器(Container)**:作为镜像的运行实例
- **仓库(Repository)**:实现镜像的存储与分发
三者通过标准化的协作流程,共同支撑应用从开发到生产的生命周期管理。以下详解其协作机制。
一、镜像:环境模板的分层封装
技术定义:不可变的只读文件,包含应用程序及其完整运行环境。采用分层存储结构优化空间效率。
协作原理:
# 构建过程展示分层机制
FROM alpine:3.18 # 基础层 (所有容器共享)
RUN apk add --no-cache python3 # 依赖层 (不同应用可复用)
COPY ./app /code # 代码层 (应用独有)
ENTRYPOINT ["python3", "/code/main.py"] # 启动层
▍ 关键协作点:
- 容器创建时以镜像为模板构建实例
- 相同的镜像层在不同容器间共享存储
- 仓库通过镜像哈希值保障内容一致性
二、容器:镜像的运行时载体
核心特性:基于镜像创建的隔离进程空间,具备独立的文件系统、网络和进程视图。
协作参数示例:
docker run -d \
--name web-server \
-p 8080:80 \ # 主机端口映射
-v /data:/var/log \ # 存储卷挂载
--memory="512m" \ # 资源限制
nginx:1.25 # 指定镜像版本
▍ 资源隔离技术:
技术 | 作用 |
---|---|
Linux Namespaces | 隔离进程/网络/用户空间 |
Control Groups | 限制CPU/内存资源 |
OverlayFS | 管理容器读写层 |
三、仓库:镜像的分发中枢
架构角色:集中存储管理镜像版本,提供标准API接口实现镜像上传下载。
协作流程:
graph LR
A[开发机] -->|docker build| B(生成镜像)
B -->|docker push| C[(仓库Harbor)]
C -->|docker pull| D[生产服务器]
D -->|docker run| E[运行容器]