Как передать KVM с локальной машины на док-контейнер?

Я пытаюсь запустить эмулятор Android (также известный как AVD) в контейнере Docker с помощью следующей команды

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. Я включил это в биосе и проверил следующей командой:

kvm-ok

система сообщила:

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

Вероятно, мне нужно запустить свой образ, передав туда KVM с помощью какой-то команды, например:

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

Но это не работает. Может ли кто-нибудь помочь мне, пожалуйста, как решить эту проблему?

1
0
3 581
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Прежде всего спасибо! После команды запуска докера, которую вы посоветовали, я получаю следующую ошибку: «докер: ответ об ошибке от демона: сбой создания среды выполнения OCI: container_linux.go: 349: запуск процесса контейнера вызвал «exec: \»--device \»: исполняемый файл не найден в $PATH": неизвестно. "

Stanly T 24.12.2020 10:28

Как я уже сказал, вы можете поставить --device в конце командной строки? Все вещи после имени изображения будут рассматриваться как аргументы изображения... Не могли бы вы заверить --device в середине команды, как я публикую?

atline 24.12.2020 10:30

Да, я использовал: docker run -idt img-emulator:v1 --device /dev/kvm --name пробная версия ubuntu:18.04.4

Stanly T 24.12.2020 10:33

Неправильно, img-emulator:v1 вот ваше изображение, вы указываете здесь 2 изображения. Возможно, следующий для вас: docker run -idt --device /dev/kvm --name trial2 img-emulator:v1

atline 24.12.2020 10:34

Другие вопросы по теме