Я пытаюсь создать образ Docker с устройством /dev/net/tun
, чтобы его можно было использовать на хостах Linux, Mac и Windows. Устройство не нуждается в доступе к сетевому интерфейсу хоста.
Обратите внимание, что передача --device /dev/net/tun:/dev/net/tun
в docker run
нежелательна, поскольку это работает только в Linux.
После запуска контейнера яможно вручную добавить устройство, запустив:
$ sudo mkdir /dev/net
$ sudo mknod /dev/net/tun c 10 200
$ sudo ip tuntap add mode tap tap
, но когда я добавляю эти строки в Dockerfile, это приводит к ошибке:
Step 35/46 : RUN mkdir /dev/net
---> Running in 5475f2e4b778
Removing intermediate container 5475f2e4b778
---> c6f8e2998e1a
Step 36/46 : RUN mknod /dev/net/tun c 10 200
---> Running in fdb0ed813cdb
mknod: /dev/net/tun: No such file or directory
The command '/bin/sh -c mknod /dev/net/tun c 10 200' returned a non-zero code: 1
Я считаю, что суть здесь заключается в создании файловой системыузел из шага docker build
? Это возможно?