Angenommen, das Host-System unterstützt bereits KVM. Ist es möglich, ein Docker-Image zu erstellen, das einige Skripts zum Starten eines VM (innerhalb des Containers) mit virsh und QEMU-KVM enthält?
Wir untersuchen das Andocken eines Skripts, das über QEMU-KVM ein VM startet und einige Ergebnisse aus der VM extrahiert.
docker --priviledged
Einige Arbeitsbefehle von Ubuntu 17.10 Host, Docker 1.13.1:
Sudo docker run --name ub16 -i --privileged -t ubuntu:16.04 bash
Dann in 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 \
;
Root-Dateisystem und bzImage werden mit diesem Setup generiert.
Einfach. Sie müssen privilegierte Container ausführen, sicherstellen, dass sich der Knoten/dev/kvm im Container befindet, und alle Pakete installieren, um kvm bereitzustellen (libvirt, quemu, was auch immer) - das ist alles, was Sie benötigen. Siehe https://github.com/sivaramsk/docker-kvm als Referenz.