容器与 Docker

1、虚拟化的作用

虚拟化技术是 IT 基础架构中最核心的能力之一,其主要作用包括:

(1)资源隔离

每个虚拟机/容器都拥有独立的资源空间(CPU、内存、磁盘、网络),互不干扰。

(2)提升资源利用率

物理机往往负载不足,通过虚拟化可以让多套系统共享一台物理服务器,提高利用率。

(3)环境迁移方便

虚拟化技术使得系统可以跨硬件、跨环境快速迁移(如 KVM、VMware 提供虚拟机迁移)。

(4)降低成本与运维难度

便于统一运维、快照备份、镜像模板部署等。

2、容器的基本定义 + 容器 vs 虚拟机

容器(Container)是什么?

容器是一种轻量级的虚拟化技术 ,使用宿主机内核,通过进程隔离+文件系统隔离来运行应用。

一句话定义:

容器是运行在宿主机上的一个独立隔离进程,拥有自己的运行环境,但共享宿主机内核。

容器 vs 虚拟机(核心差别)

总结一句话:

虚拟机虚拟硬件,容器虚拟操作系统。

3、容器引擎:Docker(目前最常用)

Docker 是目前使用率最高的容器引擎,提供容器运行、镜像管理、仓库服务等功能。

4、Docker 的 3 大核心组件

① Docker 镜像(Image)

  • 类比为一个只读模板,类似于 CentOS 镜像 ISO

  • 可以包含应用程序及其依赖环境。

  • 容器就是镜像的运行实例。

② Docker 容器运行时(Container Runtime)

负责运行容器,例如:

  • runC(底层)

  • containerd(管理层)

  • Docker Engine(对用户的接口)

作用:

确保容器能被创建、运行、停止、销毁,并管理生命周期。

③ Docker 镜像仓库(Registry)

类似于 Linux 的 Yum 仓库,存放镜像:

  • Docker Hub(官方)

  • 阿里云镜像仓库

  • 华为云镜像仓库

  • 中科大、中科院、清华大学镜像仓库

  • 企业可搭建私有仓库:Harbor

作用:用来上传、下载镜像

5、为什么要用 Docker?

(1)快速部署与迁移

封装好的镜像可以秒级部署 -> CI/CD 极度友好。

(2)环境绝对一致

镜像内部包含所有依赖:

在我电脑能跑,在服务器也能跑,不存在环境差异问题。

(3)资源占用低、启动速度快

容器不需要启动内核,直接启动应用级进程。

(4)适用于现代企业架构

  • 微服务架构

  • 云原生架构(Kubernetes)

  • DevOps 持续交付

6、Docker 的底层原理(容器为何能隔离?)

① cgroup(Control Groups)资源控制

控制:

  • CPU

  • 内存

  • IO

  • 网络带宽

作用:

防止某个容器耗尽宿主机资源。

② namespaces(6 大命名空间)隔离机制

namespace 用来实现容器的隔离能力。

总结:

namespace 负责隔离,cgroup 负责资源控制。容器 = namespace + cgroup + rootfs

7、Docker 常用基础命令详解

⭐ 一、镜像(Image)

1. 查看镜像列表

2. 下载镜像

3. 查看镜像详细信息

4. 删除镜像

以下情况需要强制删除:

  • 镜像正在被容器使用

  • 同一镜像对应多个 tag

5. 镜像导出(save)

导出为 tar 包(保留镜像层结构)

6. 镜像导入(load)

⭐ 二、容器(Container)

1. 创建并启动容器

带 CMD 的示例:

2. 查看容器

3. 删除容器

4. 进入容器

不同镜像可能默认没有 bash,也可用:

5. 文件复制(宿主机 ↔ 容器)

6. 导出容器(export)

注意:export 导出是"文件系统快照",不包含镜像层结构和历史记录。

7. 导入容器为镜像

save/load 与 export/import 的区别

一句话总结:

迁移镜像用 save/load,

迁移容器用 export/import。

知识点总结图

容器

├─ 虚拟化作用

│ ├─ 隔离

│ ├─ 资源利用率

│ ├─ 快速迁移

│ └─ 降低成本

├─ 容器定义

│ ├─ 轻量级

│ ├─ 共享内核

│ └─ 进程隔离

├─ 容器 vs 虚拟机

│ ├─ 启动快

│ ├─ 资源少

│ └─ 可移植性强

├─ Docker 架构

│ ├─ 镜像

│ ├─ 容器

│ └─ 仓库

├─ Docker 底层

│ ├─ cgroup(资源控制)

│ └─ namespaces(6大隔离机制)

└─ Docker 基础命令

├─ 镜像:pull / images / inspect / save / load

├─ 容器:run / exec / ps / rm / cp

├─ 导出:export / import

└─ 实战:CMD / ENTRYPOINT / 后台守护

相关推荐
蒸蒸yyyyzwd1 天前
cpp对象模型学习笔记1.1-2.8
java·笔记·学习
阿蒙Amon1 天前
TypeScript学习-第7章:泛型(Generic)
javascript·学习·typescript
Hill_HUIL1 天前
学习日志23-路由高级特性(静态路由)
网络·学习
dalong101 天前
A14:自定义动画演示
笔记·aardio
Chen放放1 天前
【华三】VXLAN-三层集中式网关配置
运维·网络
碎梦归途1 天前
思科网络设备配置命令大全,涵盖从交换机到路由器的核心配置命令
linux·运维·服务器·网络·网络协议·路由器·交换机
七维大脑虚拟机1 天前
飞牛NAS公网IPv6+DDNS远程访问零延迟教程
运维·服务器·网络
今儿敲了吗1 天前
鸿蒙开发第一章学习笔记
笔记·学习·鸿蒙
闪闪发亮的小星星1 天前
刚体运动学复习笔记
笔记
AZ996ZA1 天前
自学linux第十八天:【Linux运维实战】系统性能优化与安全加固精要
linux·运维·安全·性能优化