我正在尝试使用/dev/net/tun
设备创建 Docker 映像,以便可以在 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
步骤中创建一个文件系统节点?这可能吗?