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

相关推荐
生活爱好者!6 小时前
哇!影视新玩法!docker部署NEOWATCH NAS
运维·docker·容器
cpolar技术支持10 小时前
Docker 容器启动失败怎么查?端口、日志、权限与网络排障完整教程
linux·docker·容器·cpolar·网络排障
一技安身12 小时前
【大模型】Win11 部署 DeepSeek+ RAGFlow0.27.2 (Ollama方案,断网可用)
docker·ai·语言模型
新时代牛马13 小时前
docker run 起不来?从dockerd、containerd 到runc 一条线讲透
运维·docker·容器
JavaPub-rodert13 小时前
Docker 安装 MySQL 完整教程:从零部署数据库,到生产环境持久化配置
数据库·mysql·docker
努力努力再努力wz14 小时前
【Docker 入门系列】:从 Namespace、CGroup 到 LXC:理解容器运行时、rootfs 与 LXC 实战
运维·docker·容器
JavaPub-rodert15 小时前
Docker 多阶段构建:为什么生产环境镜像可以小 90%
运维·docker·容器
PC2005-cloud17 小时前
Qdrant 连接失败排查:localhost 解析到 __1,而 Docker 只绑了 IPv4
运维·docker·容器
喵喵爱自由17 小时前
Deepseek Harness镜像离线部署
docker·ai·语言模型
一技安身18 小时前
【信创】Ollama 手动提取 deepseek-r1:1.5b模型迁移到内网机器
服务器·docker·语言模型