18

假设主机系统已经支持 KVM,是否可以创建一个 docker 映像,其中包含一些脚本以使用 virsh 和 QEMU-KVM 启动 VM(在容器内)?

我们正在研究 dockerize 一个通过 QEMU-KVM 启动 VM 并从 VM 中提取一些结果的脚本。

4

3 回答 3

18

docker --privileged

来自 Ubuntu 17.10 主机、Docker 1.13.1 的一些工作命令:

sudo docker run --name ub16 -i --privileged -t ubuntu:16.04 bash

然后在 Docker 内部:

apt-get update -y
apt-get install qemu -y
qemu-system-x86_64
qemu-system-x86_64 \
  -append 'root=/dev/vda console=ttyS0' \
  -drive file='rootfs.ext2.qcow2,if=virtio,format=qcow2'  \
  -enable-kvm \
  -kernel 'bzImage' \
  -nographic \
;

使用此设置生成的根文件系统和 bzImage 。

于 2018-04-08T09:17:07.703 回答
10

--device=/dev/kvm

添加到上一个答案:使用--privileged可能会为您的用例打开太多权限。我已经能够使用 kvm 运行 qemu,而无需使用设备参数的权限。

尝试以下命令:

docker run --device=/dev/kvm -it ubuntu bash

码头工人内部:

apt-get update -y
apt-get install -y qemu-system-x86
qemu-system-x86_64 \
  -append 'root=/dev/vda console=ttyS0' \
  -drive file='rootfs.ext2.qcow2,if=virtio,format=qcow2'  \
  -enable-kvm \
  -kernel 'bzImage' \
  -nographic \
;
于 2020-11-24T00:10:03.573 回答
-1

简单的。您需要运行特权容器,确保您在容器中有 /dev/kvm 节点,安装所有软件包以服务 kvm(libvirt,quemu,无论其他) - 这就是您所需要的。请参阅https://github.com/sivaramsk/docker-kvm以供参考。

于 2018-02-08T22:45:51.387 回答