Mounting a device

Is there a way to specify in the yml file that a device should be mounted with --device instead of a volume. For my particular use case if it’s mounted as a volume it doesn’t work.

My Use Case:

I have a few infrastructure components I have to run tests against. These are 3rd party appliances we integrate with, that can only be run as a complete OS, one example would be router software like pfsense.

I’ve got a Vagrant setup that can spin up the the VM and then run the test. I’ve tested and you can indeed run this from within docker:
docker run --rm --device /dev/vboxdrv --device /dev/vboxnetctl myimage vagrant up

For anyone who wants to try this, you have to use the exact same version of virtualbox inside the container and on the host.
So ubuntu:20.10 docker and 20.10 host works seamlessly

If vboxnetctl is mounted as a volume instead of a device

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: NS_ERROR_FAILURE
VBoxManage: error: Failed to create the host-only adapter
VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface
VBoxManage: error: Context: "RTEXITCODE handleCreate(HandlerArg*)" at line 95 of file VBoxManageHostonly.cpp

Hello A-Helberg,

Currently the only way to do is using volumes :

If you want to raise this a feature request , kindly raise it here :

Hi,

Unfortunately as mentioned volumes don’t work in this case.
However, I realised that a privileged container has access to all devices and that solves it for my case.
(Our drone workers are internal only)

We can close and lock this thread

Thanks so much