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

相关推荐
郝亚军9 小时前
ubuntu通过samba,让win11可以访问其共享文件夹
linux·服务器·ubuntu
小夏子_riotous9 小时前
Docker学习路径——3、常用命令
linux·运维·服务器·学习·docker·容器·centos
HYNuyoah13 小时前
docker 安装win10系统
运维·docker·容器
JAVA学习通16 小时前
励志从零打造LeetCode平台之C端竞赛列表
java·vscode·leetcode·docker·状态模式
WAIT_TIME20 小时前
昇腾910B虚拟卡(vNPU)创建以及Docker挂载
docker·容器·昇腾·runtime·虚拟显卡·vnpu
大大杰哥20 小时前
Docker笔记
java·docker
wuyikeer21 小时前
如何在docker中的mysql容器内执行命令与执行SQL文件
sql·mysql·docker
tian_jiangnan21 小时前
把 Docker 镜像推送到 阿里云容器镜像服务 ACR
阿里云·docker·容器
李昊哲小课1 天前
WSL Ubuntu 24.04 GPU 加速环境完整安装指南
c++·pytorch·深度学习·ubuntu·cuda·tensorflow2
heimeiyingwang1 天前
【架构实战】Docker容器网络模型详解
网络·docker·架构