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 小时前
ubuntu应用深度守护
ubuntu
阿虎儿14 小时前
Docker安装(非sudo用户可用)
docker
fetasty2 天前
rustfs加picgo图床搭建
docker
蝎子莱莱爱打怪2 天前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
小p4 天前
docker学习7:docker 容器的通信方式
docker
小p4 天前
docker学习5:提升Dockerfile水平的5个技巧
docker
小p4 天前
docker学习3:docker是怎么实现的?
docker
小p5 天前
docker学习: 2. 构建镜像Dockerfile
docker
小p5 天前
docker学习: 1. docker基本使用
docker
崔小汤呀6 天前
Docker部署Nacos
docker·容器