Подключиться с хоста Windows к QEMU внутри Docker

Я пытаюсь установить соединение между Windows 10, работающим с контейнером Docker (Linux), который запускает QEMU для размещения ОС QNX. Эта картина должна прояснить ситуацию: Структура

Я хотел бы выделить то, чего мне удалось достичь на данный момент:

  1. С хоста я могу пропинговать IP-адрес внутри контейнера докеров: 10.0.75.2
  2. Из контейнера докеров, Я установил интерфейс касания и переключатель VDE, и я могу проверить связь с QNX: 192.168.56.51

Команды, используемые для запуска среды:

#add new network interface
ip tuntap add mode tap dev tap0
ip addr add 192.168.56.1/24 dev tap0
ip link set dev tap0 up

#start vde switch connected to tap0
vde_switch -F -d -sock /tmp/myswitch -tap tap0

#start QEMU
qemu-system-x86_64  \
-m 1024  \
-cpu qemu64  \
-smp 2  \
-netdev vde,id=t0,sock=/tmp/myswitch  \
-device e1000,netdev=t0,mac=52:54:00:12:34:50  \
-drive file=/qnx/qnx_vm_x86_64-qemu.img  \
-D /var/log/qemu_err.log \
-serial file:/var/log/qemu_out.log  \
-display none -daemonize

Команда для запуска контейнера докеров:

docker run -it --rm --network=host --cap-add=NET_ADMIN --privileged qemu_qnx

То, что не хватает, должно быть возможность подключения между хостом и QNX. Можно ли, например, перенаправить соединение с Hvint0 на Tap0?

Примечание: на хосте Linux я могу запустить контейнер Docker с network = host, и я могу легко получить к нему доступ с хоста, но к сожалению, это не сработает на хосте Windows.

То, что я пробовал до сих пор, к сожалению, безуспешно:

  1. Сделать переадресацию порта для гостя QNX:
#flush iptables rules
iptables -F
iptables -t nat -F

#Add rule
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 192.168.56.51:22

#Save the iptables rule :
sudo iptables-save | sudo tee /etc/iptables.up.rules

  1. Запустить QEMU с опцией hostfwd, я вижу, что порт открыт, но я не могу подключиться к нему по ssh (сомневаюсь в этом также может быть связано с настройками сети QNX)
-device e1000,netdev=net0
-netdev user,id=net0,hostfwd=tcp::2222-:22

Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.

3
задан 12 October 2019 в 13:38
1 ответ

К сожалению, Windows (и Mac) не поддерживают режим --network=host, как можно прочитать в официальной документации

Хост сетевой драйвер работает только на хостах Linux и не поддерживается в Docker Desktop для Mac, Docker Desktop для Windows или Docker EE для Windows Server.

0
ответ дан 20 May 2021 в 11:01

Теги

Похожие вопросы