
在 Ubuntu 里创建 Docker 容器,与在 Windows 上安装 VMware Workstation Pro 虚拟机,两者在架构、资源使用、启动速度、隔离程度等方面有本质区别。下面帮你梳理清楚。
一、核心区别:容器 vs 虚拟机
| 对比项 | Docker 容器 | VMware 虚拟机 |
|---|---|---|
| 运行方式 | 共享宿主机内核,进程级隔离 | 运行完整的客户操作系统(Guest OS),硬件级虚拟化 |
| 资源占用 | 轻量,只占用应用及其依赖的空间(通常几十到几百 MB) | 重量,每个虚拟机包含完整 OS,占用数 GB 磁盘和固定内存 |
| 启动速度 | 秒级(毫秒级) | 分钟级(需启动完整操作系统) |
| 隔离程度 | 进程隔离,共享内核(安全性稍弱) | 硬件隔离,安全性更高 |
| 性能 | 接近原生,无虚拟化开销 | 存在虚拟化开销(CPU、内存、I/O) |
| 使用场景 | 微服务、开发测试、持续集成、快速部署 | 运行不同操作系统、强隔离、桌面虚拟化 |
简单来说:Docker 是"轻量化"的进程打包,VMware 是"全虚拟化"的完整计算机。
二、创建 Docker 需要分别分配内存和存储吗?
不需要像虚拟机那样"固定分配",但可以通过参数进行限制。
- 默认情况下:Docker 容器共享宿主机的内存和存储,没有硬性限制。容器内看到的内存是宿主机内存,存储使用宿主机的磁盘空间(通过镜像层和卷)。
- 资源限制 :可以通过
docker run时添加参数来限制资源:--memory="512m":限制容器最多使用 512MB 内存--cpus="1.5":限制容器最多使用 1.5 个 CPU 核心--storage-opt size=10G:限制容器可用的磁盘空间(需要存储驱动支持)
如果不做限制,容器可以耗尽宿主机所有资源。因此生产环境通常会设置合理的资源上限。
三、创建 Docker 容器的基本步骤
以 Ubuntu 上创建并运行一个 Ubuntu 容器为例:
-
安装 Docker(如果尚未安装)
bashsudo apt update sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker -
拉取基础镜像 (可选,
docker run会自动拉取)bashdocker pull ubuntu:22.04 -
创建并运行容器
bashdocker run -it --name my_ubuntu ubuntu:22.04 /bin/bash-it:交互式终端--name my_ubuntu:指定容器名ubuntu:22.04:使用的镜像/bin/bash:启动命令
-
在容器内操作(如安装软件、创建文件等)
bashapt update && apt install vim -y exit # 退出容器(容器会停止) -
启动已存在的容器
bashdocker start -i my_ubuntu -
后台运行(守护模式)
bashdocker run -d --name my_ubuntu_daemon ubuntu:22.04 sleep infinity -
查看容器
bashdocker ps # 运行中 docker ps -a # 所有 -
进入后台运行的容器
bashdocker exec -it my_ubuntu_daemon /bin/bash -
删除容器
bashdocker rm my_ubuntu
四、补充说明
-
存储持久化 :容器内的数据默认随容器删除而消失。需要持久化时,应使用 卷(volume) 或 绑定挂载(bind mount) ,例如:
bashdocker run -v /宿主机路径:/容器路径 ... -
网络 :容器默认与宿主机网络隔离,可通过
-p 宿主机端口:容器端口映射端口。 -
多容器编排:使用 Docker Compose 或 Kubernetes 管理多容器应用。
五、场景选择建议
- 如果你需要在 不同操作系统 (如 Windows、Linux、macOS)上运行应用,或需要强隔离环境,选择 VMware 虚拟机。
- 如果你希望 快速启动、轻量级、方便移植 ,且运行的是 Linux 应用 ,选择 Docker 容器。