前言:
1. docker 的应用场景
①微服务架构:每个服务器独立容器化,便于管理和扩展
②CI/CD 流水线:与Jenkins/GitLab CI 集成,实现自动化构建和测试
③开发环境标准化:新成员意见启动全套依赖服务(如数据库、消息队列)
④云原生基础:Kubernetes 等编排工具基于 Docker 管理容器集群
⑤开发环境标准化(目前能接触到的作用)
2. 核心优势
跨平台一致性:解决 "在我机器上能跑" 的问题,确保开发、测试、生产环境一致
资源高效:容器直接共享主机内核,无需虚拟化整个操作系统,节省内存和CPU
快速部署:秒级启动容器,支持自动化扩容
隔离性:每个容器拥有独立的文件系统、网络和进程空间
3. 核心概念
容器:它是镜像的运行实例,当你运行一个镜像时,Docker 就会基于这个"安装包"(镜像)启动一个"软件"(容器),可以基于同一个镜像启动无数个相互隔离的容器,容器会消耗CPU和内存,是真正干活的进程
镜像:只读的模版,里面打包了运行一个软件所需的东西:代码、运行环境、库、配置等等,可以在电脑上拥有跟多个不同的 "安装包"(镜像)
Dockerfile:文本文件,描述如何自动构建镜像(例如指定基础镜像,安装软件、复制文件等)
仓库:存储和分发镜像的平台,如Docker Hub(官方公共仓库)或私有仓库(如Harbor)
可以把镜像想象成一个 "安装包" ,而容器就是按照这个安装包启动起来的,正在运行的 "软件",下面还会详细解释
一、Docker 基础概念
1. 什么是容器化技术
容器共享主机内核,轻量、隔离且高效,不像虚拟机需要完整的操作系统:
上层是多个容器,每一个容器独立运行一个应用
中间层是Docker,负责管理这些容器
底层是主机操作系统和基础设置,为容器提供硬件和系统支持

- 传统应用部署的痛点
环境不一致:应用在开发环境运行正常,但在测试或生产环境出现问题
依赖管理复杂:不同应用需要不同版本的运行时、库文件等
资源利用率低:传统虚拟机需要完整的操作系统,占用大量资源
部署复杂:需要手动配置环境,安装依赖,容易出错
- 容器化技术的解决方案
环境标准化:将应用及其依赖打包在一起,确保任何环境中都能一致运行
轻量化:容器共享宿主机的操作系统内核,比虚拟机更轻量
快速部署:容器可以在几秒内启动,大大提高了部署效率
可移植性:一次构建,到处运行
3.容器化的核心理念
容器化遵循"不可变基础设施的理念"
应用和环境被打包成不可变的镜像
每次部署都使用相同的镜像
配置通过环境变量或配置文件注入
问题修复通过重新构建镜像而非修改运行中的容器
二、Docker 的核心概念
1.镜像(Image)
定义:镜像是一个只读的模版,包含了运行应用所需的所有内容:代码、运行时库文件、环境变量和配置文件
特点:
分层存储:镜像是由多个层组成,每一层代表一次修改
只读性:镜像本身是只读的,不能直接修改
可复用:同一个镜像可以创建多个容器
版本管理:通过标签(tag)进行版本管理
类比理解:镜像就像是一个安装程序或者模版,它定义了应用运行所需的一切,但本身不能直接运行
- 容器(Container)
定义:容器是镜像的运行实例,是一个轻量级、可移植的执行环境
特点:
隔离性:每个容器都有自己的文件系统、网络和进程空间
临时性:容器可以被创建、启动、停止、删除
可写层:容器在镜像基础上添加了一个可写层
进程级:容器内通常运行一个主进程
类比理解:如果镜像是类,那么容器就是对象实例,一个镜像可以创建多个容器,就像一个类可以创建多个对象
- 仓库(Repository)
定义:仓库是存储和分发镜像的地方,可以包含一个镜像的多个版本
分类:
公共仓库:如Docker Hub,任何人都可以使用
私有仓库:企业内部搭建,用于存储私有镜像
官方仓库:由软件官方维护的镜像仓库
Registry VS Repository:
Registry:仓库注册服务器,如Docker Hub
Repository:具体的镜像仓库,如 nginx,mysql
三、Docker 与虚拟机的区别
1. 架构对比

2. 容器 VS 虚拟机结构


3. 使用场景对比
虚拟机适用场景:
需要完全隔离的环境
运行不同操作系统的应用
需要硬件级别的安全隔离
Docker容器适用场景
开发环境标准化
微服务架构
CI/CD 流水线
应用快速部署和扩展