1·基础入门入门

Docker 是什么

Docker 是什么

学习目标

  1. 理解 Docker 解决什么问题
  2. 理解容器 vs 镜像
  3. 了解 Docker 的核心概念

核心概念

一句话解释

Docker 是一个把应用和它的运行环境打包成一个轻量级"容器"的工具。

解决什么问题

开发环境              生产环境
┌──────────┐         ┌──────────┐
│ Python   │         │ Python   │
│ 3.9      │   ≠     │ 3.7      │  ← 版本不同
│ Ubuntu   │         │ CentOS   │  ← 系统不同
│ 有 nginx │         │ 没 nginx │  ← 依赖不同
└──────────┘         └──────────┘

"在我机器上能跑啊!"  ← 经典开发/运维矛盾

Docker 的解决方案:

┌─────────────────────────────┐
│         Docker 容器          │
│  ┌───────────────────────┐  │
│  │ Python 3.9            │  │
│  │ nginx 1.21            │  │
│  │ Ubuntu 基础库         │  │
│  │ 你的应用代码          │  │
│  └───────────────────────┘  │
└─────────────────────────────┘

开发、测试、生产环境完全一致

核心概念

概念类比说明
镜像 (Image)菜谱只读模板,定义容器的内容
容器 (Container)镜像的运行实例
仓库 (Registry)菜谱商店存放镜像的地方(如 Docker Hub)
镜像 (Image)          容器 (Container)
┌──────────┐         ┌──────────┐
│ nginx    │  run →  │ nginx    │  ← 运行中
│ 1.21     │         │ PID: 42  │
│ 配置文件 │         │ 端口: 80 │
└──────────┘         └──────────┘
   只读                  可写

Docker vs 传统部署

方面传统部署Docker
环境一致性难以保证完全一致
启动速度分钟级秒级
资源占用虚拟机开销大共享内核,轻量
隔离性依赖系统隔离进程级隔离
扩展手动部署一行命令复制

实际应用场景

1. 开发环境统一
   - 新人入职:docker compose up 一键启动

2. CI/CD
   - 构建镜像 → 测试 → 部署,全流程一致

3. 微服务
   - 每个服务一个容器,独立部署扩展

4. 快速原型
   - 试用新软件:docker run mysql,用完即删

实践练习

练习 1:理解概念

回答以下问题:

  1. 镜像和容器的关系是什么?
  2. 为什么 Docker 比虚拟机更轻量?
  3. Docker Hub 的作用是什么?

练习 2:画图

画出 Docker 的核心架构:Client → Daemon → Registry → Container

常见误解

1. Docker 不是虚拟机

虚拟机:
┌─────────────────┐
│   Guest OS      │  ← 完整操作系统,GB 级
│   App           │
└─────────────────┘

Docker 容器:
┌─────────┐
│   App   │  ← 只有应用和依赖,MB 级
└─────────┘
   共享宿主机内核

2. 容器不是"轻量虚拟机"

容器本质是受限制的 Linux 进程,不是虚拟化的机器。

小结

要点说明
Docker打包应用+环境为容器的工具
镜像只读模板(菜谱)
容器运行实例(菜)
仓库镜像存储(菜谱商店)
核心价值环境一致性、快速部署、资源高效

练习编辑器

bash
Loading...