Docker 作为当今流行的容器化技术,掌握Docker组件对于理解 Docker 至关重要@mikechen
Docker
Docker 是一个开源的应用容器引擎,旨在实现“构建一次,运行无处不在”的理念。
它允许开发者将应用及其依赖环境打包进一个标准化的镜像中,并通过容器的形式运行,做到轻量级、快速交付、环境一致性与资源隔离。
✅ 轻量级:基于操作系统层的虚拟化,容器共享宿主内核,启动秒级;
🛠 可移植:构建一次的镜像可运行在任何支持 Docker 的平台;
📦 标准化打包:通过 Dockerfile 定义构建流程,镜像具备一致性;
🔒 资源隔离:利用 Linux 的 Namespace 和 Cgroups 实现资源隔离与限制;
🔁 镜像复用与层级缓存:提高构建效率与存储复用率。
Docker组件
Docker 围绕 镜像(Image)、容器(Container) 和 仓库(Registry) 三个组件展开。
如下图所示:
三者相互依赖,构成完整的容器生命周期。
1. Docker 镜像(Image)
📦 镜像定义
Docker 镜像是一个包含文件系统和应用程序运行环境的只读模板,是容器运行的基础。
📌 特点
- 镜像是分层结构(Layered Filesystem),由多个层叠加组成
- 每一层不可变,构建镜像时是增量生成的
- 支持缓存复用(提高构建速度)
🧱 构建方式
- 基于 Dockerfile 构建:
docker build -t myapp .
- 也可以通过镜像拉取:
docker pull nginx
FROM node:18 WORKDIR /app COPY . . RUN npm install CMD ["node", "index.js"]
2. Docker 仓库(Registry)
🗂 仓库定义
Docker 仓库用于存储和分发镜像,用户可以将本地镜像推送到仓库,也可以从仓库拉取所需镜像。
🌐 公共与私有
公共仓库:如 Docker Hub
私有仓库:如 Harbor,或使用 registry:2
搭建的本地仓库
🔁 相关命令
- 拉取镜像:
docker pull ubuntu:latest
- 推送镜像:
docker push myrepo/myimage:1.0
- 登录仓库:
docker login
3. Docker 容器(Container)
🚀 容器定义
容器是镜像的运行实例,包含应用及其运行时环境。容器是隔离的、轻量的、可重复部署的单位。
⚙ 工作原理
- 基于镜像启动(容器 = 镜像 + 可读写层)
- 每次
docker run
实际是创建一个新容器 - 利用 Linux Namespace 和 Cgroups 实现资源隔离与限制
🧰 常用命令
命令 | 作用 |
---|---|
docker run -it ubuntu |
启动容器并进入交互模式 |
docker ps -a |
查看所有容器 |
docker stop/start/restart |
控制容器生命周期 |
docker exec -it <id> bash |
进入正在运行的容器 |
Docker 镜像、容器、仓库三者关系
📊 总体关系图
[ Docker 镜像 (Image) ] ←→ [ Docker 仓库 (Registry) ]
↓
[ Docker 容器 (Container) ]
开发者使用Dockerfile构建镜像,并将镜像推送到仓库。
运维人员从仓库拉取镜像,并使用镜像创建和运行容器。
Docker守护进程在其中起到一个核心作用,管理着镜像和容器,并相应Docker客户端的请求。
通过这三个核心组件的协同工作,Docker实现了应用程序的容器化和高效管理。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!

后台回复【架构】即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》