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容器所需的环境。

相关推荐
程序员老赵16 小时前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua11121 小时前
LM Studio Docker 部署——本地大模型一键启动
docker
曲幽2 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
武子康4 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn867 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
2601_961875247 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
java_cj7 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
张飞飞飞飞飞7 天前
Tmux命令使用教程
linux·服务器·ubuntu
程序员老赵7 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
杨浦老苏7 天前
轻量级Docker仪表板Servedash
运维·docker·监控·群晖·仪表板