Setting Up a Docker Macvlan Network
Docker's macvlan network driver allows containers to appear as physical devices on your network. This is incredibly useful for applications that need to be directly accessible from the physical network without port mapping, or for creating a network environment where each container has its own unique MAC address and IP. This article will walk you through the process of creating and verifying a Docker network using the macvlan driver.
Step 1: Create the Macvlan Network
To create a macvlan network, you'll use the docker network create command. This command is highly flexible, letting you specify the driver, subnet, and IP range. In this example, we'll create a network named blog with a subnet and IP range of 172.28.0.0/24.
Here's the command used:
[steve@stapp02 ~]$ docker network create -d macvlan --subnet=172.28.0.0/24 --ip-range=172.28.0.0/24 blog
The output confirms the network's creation by providing its unique ID:
5e9cef370a8a3017dfff2c48b4e31391c9c79f2cf0e4d48648dce92481df6128
Step 2: Verify the Network's Existence
After creation, it's good practice to verify that the network has been set up correctly. You can list all existing Docker networks using the docker network ls command.
[steve@stapp02 ~]$ docker network ls
This command provides a clean, table-formatted output of all networks. You should see blog listed with macvlan under the DRIVER column, confirming its successful creation and driver type.
NETWORK ID NAME DRIVER SCOPE
5e9cef370a8a blog macvlan local
ecc55a5f1887 bridge bridge local
98aaf841e624 host host local
4759c790bb09 none null local
Step 3: Inspect Network Details
For a detailed view of the network's configuration, use the docker network inspect command. This command returns a JSON object containing comprehensive information about the network, including its driver, IPAM (IP Address Management) settings, and any connected containers.
Here's the command to inspect our newly created network:
[steve@stapp02 ~]$ docker network inspect blog
The output, shown below, provides a full overview. We can confirm that the Driver is set to macvlan and the IPAM section correctly shows our specified Subnet and IPRange.
[
{
"Name": "blog",
"Id": "5e9cef370a8a3017dfff2c48b4e31391c9c79f2cf0e4d48648dce92481df6128",
"Created": "2025-09-14T19:11:22.695106941Z",
"Scope": "local",
"Driver": "macvlan",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.28.0.0/24",
"IPRange": "172.28.0.0/24"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
Top comments (0)