初识Docker------概念与优势
- 一:简介
-
- [1.1 网址](#1.1 网址)
- [1.2 什么是 Docker](#1.2 什么是 Docker)
- [1.3 为什么用 Docker](#1.3 为什么用 Docker)
- [1.4 Docker 与 传统虚拟机的比较](#1.4 Docker 与 传统虚拟机的比较)
- 二:核心概念
-
- [2.1 镜像(Image)](#2.1 镜像(Image))
- [2.2 容器(Container)](#2.2 容器(Container))
- [2.3 仓库(Repository)](#2.3 仓库(Repository))
- 总结
🎯 系列介绍
🔔 本文是 《Docker实战入门与部署指南:从核心概念到网络与数据管理》 系列的第一篇!
本系列将从零开始,带你系统性地学习 Docker 的核心概念、安装部署、容器管理、镜像制作、数据持久化与网络配置,最终具备构建和运维容器化应用的能力。
⚠️ 该系列所有涉及的配置脚本、Dockerfile示例和离线安装包都可以私信博主免费获取。
📚 系列篇章总览
-
第一章:初识Docker------概念与优势
核心: 理解Docker是什么,它与传统虚拟机的本质区别,以及为何要使用容器化技术。 -
第二章:环境准备与Docker安装
核心: 掌握在CentOS系统上搭建Docker运行环境,从操作系统准备到Docker CE的安装、配置与优化。 -
第三章:Docker基础操作------镜像与容器管理
核心: 理解Docker是什么,它与传统虚拟机的本质区别,以及为何要使用容器化技术。 -
第四章:深入Docker架构------C/S模式解析
核心: 理解Docker客户端与守护进程如何协同工作,这是掌握Docker运行原理和高级管理(如远程连接)的基础 -
第五章:自定义镜像制作------从Dockerfile到镜像
核心: 掌握制作自定义镜像的四种方式,重点学习使用Dockerfile进行标准化、可复用的镜像构建。 -
第六章:数据持久化------Volume与Bind Mount
核心:解决容器内数据易失性问题,学习如何通过Volume和绑定挂载实现数据的持久化存储与跨容器共享。 -
第七章:容器网络配置------从互联到自定义桥接
核心: 掌握容器间的通信方式,学习默认Bridge、Host网络,并最终通过自定义网络和Pipework实现容器与宿主机网络的无缝集成。
🚀 系列最终成果
当你完整学完并实操本系列,你将拥有:
✅ 扎实的Docker理论基础,清晰理解容器、镜像、仓库等核心概念。
✅ 独立部署Docker环境的能力,并完成常用配置优化(如镜像加速)。
✅ 熟练的容器与镜像管理技能,能够进行日常的运维操作。
✅ 制作自定义业务镜像的能力,为应用容器化打下基础。
✅ 解决数据持久化问题的方案,确保应用数据安全。
✅ 配置复杂容器网络的能力,实现容器内外的灵活通信。
真正实现: 概念理解 → 环境搭建 → 日常操作 → 镜像定制 → 数据管理 → 网络配置,一站式掌握Docker核心技能。
一:简介
1.1 网址
1.2 什么是 Docker
Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动开放容器联盟(OCI)。
Docker 使用 Google 公司推出的 Go 语言进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自主开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
1.3 为什么用 Docker
1)更高效的利用系统资源
由于容器不需要 进行硬件虚拟以及运行完整操作系统等额外开销 ,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
2)更快速的启动时间
传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统 ,因此可以做到秒级 、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
3)一致的运行环境
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。
4)持续交付和部署
对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署(Continuous Delivery/Deployment) 系统进行自动部署。而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。
5)更轻松的迁移
由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
6)更轻松的维护和扩展
Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。
1.4 Docker 与 传统虚拟机的比较
本质差异:
- 虚拟化:虚拟的是硬件
- 容器化:隔离的是进程
| 特性 | 容器 | 虚拟机 | 物理机 |
|---|---|---|---|
| 启动速度 | 秒级 | 分钟级 | 小时级 |
| 磁盘使用 | MB 级 | GB 级 | TB 级 |
| 性能 | 接近原生 | 较弱 | 原生 |
| 支持数量 | 上千 | 数十 | 单个 |
| 隔离性 | 安全隔离 | 安全隔离 | 安全隔离 |

二:核心概念
Docker 包括三个基本概念:
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
三者关系:仓库 → 存镜像
镜像 → 创建容器
容器 → 运行程序
仓库
↓pull
镜像
↓ docker run
容器
2.1 镜像(Image)
是什么:
- 一个 只读的模板
- 包含:
- 应用程序
- 运行环境
- 依赖库
- 配置文件
特点:
- 不能直接运行
- 可以被多个容器复用
- 支持分层存储(layer)
2.2 容器(Container)
是什么:
- 镜像运行后的实例
- 本质是一个被隔离的进程
特点:
- 可启动、停止、删除
- 镜像自身是只读的,容器从镜像启动的时候,会在镜像之上多了一层 可写层
- 容器之间相互隔离
2.3 仓库(Repository)
是什么:
- 存放镜像的集中地
- 用来上传(push)和下载(pull)镜像
分类:
- 公共仓库
- Docker Hub(官方)
- 阿里云、腾讯云
- 私有仓库
- Harbor
- 自建 registry
总结
通过本章学习,我们深入理解了Docker的本质与价值:
Docker是什么?
- 一个容器化平台,基于Go语言开发
-利用Linux内核的cgroup、namespace等技术实现进程隔离
- 比虚拟机更轻量、更快速
为什么要用Docker?
-
✅ 高效利用资源 - 无需虚拟硬件,接近原生性能
-
✅ 秒级启动 - 直接运行于宿主内核,告别分钟级等待
-
✅ 环境一致性 - "在我机器上能运行"成为历史
-
✅ 简化部署流程 - 一次构建,随处运行
Docker vs 传统虚拟机
| 维度 | 容器 | 虚拟机 |
|---|---|---|
| 本质 | 隔离进程 | 虚拟硬件 |
| 启动速度 | 秒级 | 分钟级 |
| 磁盘占用 | MB级 | GB级 |
| 性能 | 接近原生 | 有损耗 |
| 单机支持数量 | 上千个 | 数十个 |
三大核心概念
-
镜像(Image):只读模板,包含应用+环境
-
容器(Container):镜像的运行实例
-
仓库(Repository):镜像的集中存储地
-
关系链:仓库 ← 镜像 → 容器
