Network configuration
RemotiveBus networks are configured as Docker networks. The type attribute determines what kind of network is created.
can: For connecting to physical CAN devicesvcan: For creating virtual CAN devicesvlan: For creating Ethernet networks with 802.1Q tagstap: For passively observing traffic on other Ethernet networks
CAN networks
CAN networks connect containers to CAN buses, either physical hardware or virtual buses.
Connect a container to a physical CAN interface
Use type: can to give a container access to an existing SocketCAN interface on the host which may be connected to physical device.
type: can
device: mybus
host_device: myhostbus # Name of the SocketCAN device on the host
baudrate: 500000 # Optional: applied if the device was down
baudrate_fd: 2000000 # Optional: applied if the device was down
txqueuelen: 1000 # Optional: override the TX queue length
Create a virtual CAN bus between containers
Use type: vcan without a host_device to create an isolated virtual CAN bus that's only accessible inside Docker containers.
type: vcan
device: mybus
Bridge a virtual CAN bus to the host
Adding host_device creates a virtual CAN interface on the host as well, so the traffic is accessible from outside Docker containers.
type: vcan
device: mybus
host_device: myhostbus # Name of the virtual CAN interface to create on the host
Bridge with a RemotiveBus plugin
Plugins can be notified when a VCAN network is created or torn down. This is used for things like bridging CAN traffic to external hardware.
type: vcan
device: mybus
host_device: myhostbus
plugin.driver: kvaser # Plugin ID — must match the plugin's socket name
See the Plugins page for details on how plugins work.
CAN configuration options
type: can
| Option | Description |
|---|---|
device | Name of the CAN interface inside the container. Docker appends a trailing 0 to this name. |
host_device | Name of the SocketCAN device on the host to connect to. |
baudrate | CAN baud rate. Applied only if the device was down at startup. |
baudrate_fd | CAN-FD baud rate. Applied only if the device was down at startup. |
txqueuelen | TX queue length override for the network interface. |
type: vcan
| Option | Description |
|---|---|
device | Name of the CAN interface inside the container. Docker appends a trailing 0 to this name. |
host_device | (Optional) Name of the virtual CAN interface to create on the host. |
plugin.driver | (Optional) ID of a RemotiveBus plugin to notify on network create/destroy. |
plugin.* | (Optional) Additional options passed to the plugin. |
VLAN networks
VLAN networks provide Ethernet connectivity to containers using 802.1Q VLAN tags.
Containers receive a trunk interface that carries tagged VLAN traffic as well as VLAN subinterfaces (e.g. eth0.100) that strip VLAN tags so the container sees plain Ethernet frames.
Connect a container to a VLAN
The most basic case: a container joins a specific VLAN as an access port. The container sees plain Ethernet frames with no VLAN tags on the subinterface.
type: vlan
vlan_id: 10 # VLAN ID (1–4094)
device: eth0.10 # Interface name inside the container
host_bridge_device: rb0 # Bridge name on the host (created automatically)
The bridge specified by host_bridge_device is created automatically by RemotiveBus. If a bridge with that name already exists on the host (for example, created manually or by another tool), network creation fails.
Connect a VLAN to a physical network interface
To allow VLAN traffic to flow to or from the physical network, specify one or more host interfaces with host_physical_device.
type: vlan
vlan_id: 10
device: eth0.10
host_bridge_device: rb0
host_physical_device: "eth1" # Single physical interface
# or:
host_physical_device: "eth1,eth2" # Multiple interfaces (comma-separated)
Multiple VLAN networks on the same bridge
Multiple VLAN networks can share the same bridge by using the same host_bridge_device name. Each VLAN is isolated from the others.
# VLAN 10
type: vlan
vlan_id: 10
device: eth0.10
host_bridge_device: rb0
# VLAN 20
type: vlan
vlan_id: 20
device: eth0.20
host_bridge_device: rb0
Raw trunk mode (container handles VLAN tagging)
By default, containers receive both a trunk interface carrying all tagged VLAN traffic and a VLAN subinterface for each VLAN id. If a container needs to handle 802.1Q VLAN tags itself (for example, a debug tool or a container running its own VLAN logic), set create_vlan_interface: "false" in the container's driver_opts and the subinterfaces won't be created.
This is a per-container option set at join time, not a network-level option. Different containers on the same network can use different modes.
services:
mycontainer:
networks:
vlan10:
driver_opts:
create_vlan_interface: "false" # Container still receives raw 802.1Q frames
VLAN configuration options
Network creation options
| Option | Description |
|---|---|
device | Interface name inside the container. |
vlan_id | VLAN ID for this network (1–4094). |
host_bridge_device | Bridge name on the host (max 15 characters). |
host_physical_device | (Optional) Physical host interface to attach to the bridge. Accepts a single name or a comma-separated list (e.g. "eth1" or "eth1,eth2"). |
Per-container join-time options (set in driver_opts)
| Option | Description |
|---|---|
device | (Optional) Override the interface name inside this specific container. |
create_vlan_interface | (Optional) Set to "false" to skip creating a VLAN subinterface. Default: "true". |
TAP networks
TAP (Test Access Point) networks passively observe traffic on another Ethernet network by mirroring the traffic into a container using Linux TC rules. The container receives a copy of all packets (including original IPs, MAC addresses, and ports) without being connected to the observed network itself.
Mirroring is updated automatically as containers join the target network. Multiple containers on the same TAP network each receive an independent copy of the mirrored traffic.
Connect a container to a TAP network
type: tap
device: tap0
target_network: ${COMPOSE_PROJECT_NAME}_my_net # Full Docker network name, including compose project prefix
The target_network can be any Docker bridge or macvlan network, or a RemotiveBus vlan network. When targeting a RemotiveBus vlan network, the observer receives 802.1Q tagged frames.
Docker Compose prefixes network names with the project name (e.g. myproject_my_net). Use ${COMPOSE_PROJECT_NAME} in your Compose file to reference the prefix dynamically, or run docker network ls to find the exact name.
ipvlan networks aren't supported as tap targets.
TAP configuration options
| Option | Description |
|---|---|
device | Interface name inside the container. |
target_network | Full name of the Docker network whose traffic is mirrored. When using Docker Compose, this includes the project-name prefix (e.g. ${COMPOSE_PROJECT_NAME}_my_net). |