在受限 Docker 容器(2核4GB)内通过 QEMU 运行完整 Ubuntu 22.04

270 字
1 分钟
在受限 Docker 容器(2核4GB)内通过 QEMU 运行完整 Ubuntu 22.04

在受限 Docker 容器内运行完整 Ubuntu 虚拟机#

本文记录了在仅 2 核 4GB无 KVM 支持的受限 Docker 容器中,成功运行完整 Ubuntu 22.04 系统的实战过程。

环境限制#

  • /dev/kvm
  • 无法重新 docker run
  • 只能使用 QEMU 软件模拟(TCG)

准备阶段#

Terminal window
cd /vm/images
# 下载镜像
wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img -O ubuntu.qcow2
# 创建 cloud-init 配置
cat > user-data << 'EOF'
#cloud-config
password: ubuntu
chpasswd: { expire: False }
ssh_pwauth: True
EOF
cat > meta-data << 'EOF'
instance-id: iid-local01
local-hostname: ubuntu-vm
EOF
apt update && apt install -y genisoimage
genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data

最终稳定启动命令(3.3GB 内存版)#

Terminal window
qemu-system-x86_64 \
-cpu qemu64 \
-m 3379 -smp 2 \
-drive file=ubuntu.qcow2,format=qcow2,if=virtio,cache=writeback \
-cdrom seed.iso \
-net nic,model=virtio -net user,hostfwd=tcp::2222-:22 \
-nographic -boot order=dc

登录:用户名 ubuntu,密码 ubuntu

进程保护#

Terminal window
tmux new -s qemu-vm
# 运行 QEMU 命令后,按 Ctrl+B D 脱离

性能优化建议#

  • 内存分配控制在容器总量的 80%~85%
  • 使用 cache=writeback 提升磁盘性能
  • 优先使用 tmux 保护进程

常见问题#

  • QEMU 闪退 → 简化参数或检查 seed.iso 是否存在
  • 无法登录 → 必须挂载 cloud-init 的 seed.iso

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
在受限 Docker 容器(2核4GB)内通过 QEMU 运行完整 Ubuntu 22.04
https://www.infvar.com/posts/vmindocker/
作者
Dignite
发布于
2026-07-10
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Dignite
技术,学习,生活,旅行。
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
站点统计
文章
151
分类
5
标签
282
总字数
319,025
运行时长
0
最后活动
0 天前

目录