Docker, virtual machine, WSL, Ubuntu

Docker 是什么?

Docker 不是虚拟机(Virtual Machine),而是一个容器化(Containerization)平台。

关键区别:

特征 虚拟机 (VM) Docker 容器
隔离级别 完整的硬件虚拟化,每个VM有自己的操作系统内核 进程级隔离,共享主机操作系统内核
启动速度 慢(分钟级) 极快(秒级)
资源占用 高(每个VM需要完整的OS) 低(共享主机内核)
镜像大小 大(GB级别) 小(MB级别)

它们之间的关系:

1. Docker 容器

  • 本质:只是运行在主机上的一个特殊进程
  • 特点:使用Linux内核的命名空间(namespaces)和控制组(cgroups)实现隔离
  • 比喻:像是一个"豪华的沙箱",进程以为自己独占系统,但实际上共享内核

2. WSL2 (Windows Subsystem for Linux 2)

  • 是什么:微软开发的Linux兼容层,在Windows上运行Linux二进制文件
  • 特点 :
    • 使用一个轻量级的虚拟机运行Linux内核
    • 比传统VM更高效,与Windows紧密集成
    • Docker Desktop for Windows 依赖 WSL2 来运行Linux容器

3. Ubuntu

  • 是什么:一个完整的Linux操作系统发行版
  • 与Docker的关系 :
    • Ubuntu 可以 作为Docker容器的基础镜像(如 ubuntu:20.04)
    • Ubuntu 也可以作为运行Docker的主机操作系统
    • 在Windows上,你可以在WSL2中安装Ubuntu,然后在Ubuntu中运行Docker

典型Windows用户的设置流程:

复制代码
你的Windows电脑
    ↓
启用WSL2功能
    ↓
在Microsoft Store安装Ubuntu(或其他Linux发行版)
    ↓
安装Docker Desktop for Windows
    ↓
Docker Desktop配置使用WSL2后端
    ↓
现在你可以在Windows终端中运行Linux容器

类比说明:

想象一栋公寓楼:

  • 虚拟机 = 每个房间都有完整的厨房、浴室、卧室(完全独立)
  • Docker容器 = 每个房间共享大楼的水电管道,但有自己的家具和布局
  • WSL2 = 这栋公寓楼建在Windows"土地"上,但遵守Linux"建筑规范"
  • Ubuntu = 其中一种房间装修风格(还有其他如CentOS、Alpine等)

在你的课程场景中:

bash 复制代码
# 当你运行这个命令时:
docker run -v /host/path:/container/path cis548/docker-env

# 发生了什么:
1. Docker从镜像仓库下载 `cis548/docker-env` 镜像
2. 创建一个容器(一个隔离的进程环境)
3. 挂载你的本地目录到容器内
4. 在容器内启动bash shell
5. 你在容器内操作,但文件实际上存储在主机上

总结:

  • Docker ≠ 虚拟机,更轻量,更高效
  • WSL2 ≠ Docker,WSL2是让Windows能运行Linux环境的基础设施
  • Ubuntu ≠ Docker,Ubuntu是一个操作系统,可以作为Docker镜像或运行Docker的主机
  • 它们协作:Windows → WSL2 → (可选Ubuntu) → Docker → 你的容器应用

这就是为什么在课程中,老师让你先确保Docker Desktop运行正常,因为它依赖于WSL2(在Windows上),而WSL2提供了运行Linux容器所需的环境。

相关推荐
靳某某。3 小时前
Ubuntu安装php8.4 及redis ngin
linux·redis·ubuntu
木泽八3 小时前
《Ubuntu系统GRUB引导修复操作记录》
linux·运维·ubuntu
choumin4 小时前
C++ 标准容器为什么不能存引用
c++·容器·引用类型
Starry-sky(jing)5 小时前
crane 下载镜像:不连接 Docker,3 步准备并校验 ARM64 离线包
运维·docker·arm64·crane
对象存储与RustFS6 小时前
GPU 在空转等数据?PyTorch 训练集进 RustFS 的三种接法
后端·docker·云原生
承渊政道8 小时前
Linux网络学习【从深入理解网络层原理到IP分片与重组全过程剖析】
linux·计算机网络·ubuntu·ip分片与重组
~城南花已开~9 小时前
Redfish 事件接收服务搭建指南(Ubuntu Server 实测)
linux·服务器·python·ubuntu
_小许_9 小时前
Linux 常用命令速查:CentOS 与 Ubuntu 双线对照
linux·ubuntu·centos
可涵不会debug10 小时前
超级马里奥常驻极空间以后怎么打开?Docker运行游戏页面,手机电脑都能从浏览器进入
游戏·docker·智能手机
2601_9498477510 小时前
io-ts 跨端三方库仓颉适配全流程
linux·运维·ubuntu