如何将 KVM 从本地机器传递到 docker 容器?

How to pass KVM from local machine to docker container?

我正在尝试通过下一个命令在 Docker 容器中启动 Android 模拟器(又名 AVD)

docker run -it img_emulator:v1 

但我收到以下错误:

emulator: CPU Acceleration: DISABLED
emulator: CPU Acceleration status: /dev/kvm is not found: VT disabled in BIOS or KVM kernel module not loaded
emulator: ERROR: x86_64 emulation currently requires hardware acceleration!
Please ensure KVM is properly installed and usable.
CPU acceleration status: /dev/kvm is not found: VT disabled in BIOS or KVM kernel module not loaded

事实上,我在 Linux 18.04 的笔记本电脑上进行了虚拟化。我在 Bios 中启用它并通过下一个命令检查它:

kvm-ok

系统报告:

INFO: /dev/kvm exists
KVM acceleration can be used

可能我必须 运行 我的图像通过类似这样的命令传递给 KVM:

docker run -it img_emulator:v1 --device /dev/kvm

但是没用。 谁能帮我解决这个问题?

kvm是一个内核模块,所以它可以被容器共享。看起来你把 --device /dev/kvm 放在错误的命令位置,正确的是:

docker run -idt --device /dev/kvm --name trial ubuntu:18.04

然后,将 kvm-ok 脚本从主机复制到容器:

docker cp /usr/sbin/kvm-ok trial:/opt

最后,验证容器中的kvm:

$ docker exec -it trial /opt/kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used