容器与 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 / 后台守护

相关推荐
70asunflower1 小时前
Emulation,Simulation,Virtualization,Imitation 的区别?
linux·docker
三水不滴2 小时前
计网ping原理
经验分享·笔记·计算机网络
聆风吟º2 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
prog_61032 小时前
【笔记】思路分享:各种大模型免费当agent后台
笔记·大语言模型·agent·cursor
ShiLiu_mtx2 小时前
k8s - 7
云原生·容器·kubernetes
NPE~2 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化
神梦流2 小时前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器
凯尔萨厮2 小时前
Maven(Windows下载安装)
笔记·maven
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
春日见2 小时前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设