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

相关推荐
小p15 小时前
docker学习: 2. 构建镜像Dockerfile
docker
小p1 天前
docker学习: 1. docker基本使用
docker
蝎子莱莱爱打怪2 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀2 天前
Docker部署Nacos
docker·容器
缓解AI焦虑2 天前
Docker + K8s 部署大模型推理服务:资源划分与多实例调度
docker·容器
1candobetter2 天前
Docker Compose Build 与 Up 的区别:什么时候必须重建镜像
docker·容器·eureka
DianSan_ERP2 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
西岸行者2 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
呉師傅2 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑