Docker组件详解(3大核心组件)

Docker 作为当今流行的容器化技术,掌握Docker组件对于理解 Docker 至关重要@mikechen

Docker

Docker 是一个开源的应用容器引擎,旨在实现“构建一次,运行无处不在”的理念。

它允许开发者将应用及其依赖环境打包进一个标准化的镜像中,并通过容器的形式运行,做到轻量级、快速交付、环境一致性与资源隔离。

Docker组件详解(3大核心组件)-mikechen

 

✅ 轻量级:基于操作系统层的虚拟化,容器共享宿主内核,启动秒级;

🛠 可移植:构建一次的镜像可运行在任何支持 Docker 的平台;

📦 标准化打包:通过 Dockerfile 定义构建流程,镜像具备一致性;

🔒 资源隔离:利用 Linux 的 Namespace 和 Cgroups 实现资源隔离与限制;

🔁 镜像复用与层级缓存:提高构建效率与存储复用率。

 

Docker组件

Docker 围绕 镜像(Image)、容器(Container) 和 仓库(Registry) 三个组件展开。

如下图所示:

Docker组件详解(3大核心组件)-mikechen

三者相互依赖,构成完整的容器生命周期。

1. Docker 镜像(Image)

📦 镜像定义

Docker 镜像是一个包含文件系统和应用程序运行环境的只读模板,是容器运行的基础。

Docker组件详解(3大核心组件)-mikechen

📌 特点

  • 镜像是分层结构(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

Docker组件详解(3大核心组件)-mikechen

私有仓库:如 Harbor,或使用 registry:2 搭建的本地仓库

🔁 相关命令

  • 拉取镜像:docker pull ubuntu:latest
  • 推送镜像:docker push myrepo/myimage:1.0
  • 登录仓库:docker login

 

3. Docker 容器(Container)

🚀 容器定义

容器是镜像的运行实例,包含应用及其运行时环境。容器是隔离的、轻量的、可重复部署的单位。

Docker组件详解(3大核心组件)-mikechen

⚙ 工作原理

  • 基于镜像启动(容器 = 镜像 + 可读写层)
  • 每次 docker run 实际是创建一个新容器
  • 利用 Linux Namespace 和 Cgroups 实现资源隔离与限制

🧰 常用命令

命令 作用
docker run -it ubuntu 启动容器并进入交互模式
docker ps -a 查看所有容器
docker stop/start/restart 控制容器生命周期
docker exec -it <id> bash 进入正在运行的容器

 

Docker 镜像、容器、仓库三者关系

📊 总体关系图

Docker组件详解(3大核心组件)-mikechen

[ Docker 镜像 (Image) ] ←→ [ Docker 仓库 (Registry) ]

[ Docker 容器 (Container) ]

开发者使用Dockerfile构建镜像,并将镜像推送到仓库。

运维人员从仓库拉取镜像,并使用镜像创建和运行容器。

Docker守护进程在其中起到一个核心作用,管理着镜像和容器,并相应Docker客户端的请求。

通过这三个核心组件的协同工作,Docker实现了应用程序的容器化和高效管理。

mikechen

mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

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

评论交流
    说说你的看法