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

相关推荐
拼好饭和她皆失43 分钟前
Java学习--方法的详细讲解
学习
能不能别报错44 分钟前
k8s的cicd流水线环境搭建实验
云原生·容器·kubernetes
秋深枫叶红1 小时前
嵌入式第二十七篇——数据结构——栈
c语言·数据结构·学习·算法
可可苏饼干1 小时前
MySQL 索引
运维·数据库·学习·mysql
107101 小时前
Docker学习笔记
笔记·学习·docker
盐焗西兰花1 小时前
鸿蒙学习实战之路 - 轮播图组件实现
学习·华为·harmonyos
Lovely Ruby1 小时前
前端er Go-Frame 的学习笔记:实现 to-do 功能(一)
前端·学习·golang
无代码专家1 小时前
数字化转型下的订单管理全流程优化方案
大数据·运维·人工智能
todoitbo1 小时前
openEuler 云原生进阶:K3s 轻量级 Kubernetes 集群实战
云原生·容器·kubernetes·openeuler