cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
94
Views
0
Helpful
1
Replies

Docker network MacVLAN and IPvlan

Translator
Community Manager
Community Manager

I have a question that I am not understanding about docker networks, Macvlan and ipvlan. In the first example, I want to show you the macvlan bridge mode network. This works correctly for me, I show you what I have done to make it work correctly.

1. First I have executed these commands

sudo ip link add macvlan_int link enp0s3 type macvlan mode bridge

sudo ip address add 192.168.1.2/24 dev macvlan_int

sudo ip link set macvlan_int up

sudo ip route add 192.168.1.110/32 dev macvlan_int

2. After I have run docker compose, I have it working this way.

```
version:'3.8'
service:
profiles:
- net7
image: nginx
networks:
demo-macvlan:
ipv4_address: 192.168.1.110
stdin_open: true
tty: true
restart: 'no'
init: true

networks:
demo-macvlan:
driver: macvlan
ipam:
config:
- subnet: 192.168.1.0/24
gateway: 192.168.1.1
driver_opts:
parent: enp1s0
```

3. I run this in my browser http://192.168.1.110  and the Macvlan Bridge mode works correctly

So far so good, it works well for me, but now the problems come. Before starting the next example I want to mention something to the previous example, if I have done something wrong or I want you to mention something to me, I am new to docker in networks. Now let's move on to the second example to the macvlan 802.1Q trunk bridge mode I want to implement this. The only thing I have done is the following in my docker compose.


```
version:'3.8'
service:
ivlan2:
profiles:
- net8
image: nginx
networks:
ip-vlan:
ipv4_address: 192.168.1.130
stdin_open: true
tty: true
restart: 'no'
init: true

networks:
net-app:
external: true
net:
external: true
demo-macvlan50-net:
driver: macvlan
ipam:
config:
- subnet: 192.168.1.0/24
gateway: 192.168.1.1
driver_opts:
parent: enp1s0.50
```
Here what I have done is the following, I have changed the IP to this 192.168.1.130 then I have added the enp1s0.50, ok so far everything is fine inside the container I execute the ping to the IP 192.168.1.130 and it works, it gives me a signal, but When I run this on my host and add the ping 192.168.1.130 it doesn't work correctly when I run that on my host and add the http://192.168.1.130  it tells me connection refused, I want to mention that I have no conflicts with anything I have checked it too I have run these commands netstat -rn | fgrep 0.0.0.0 || ip route, nmap -sn 192.168.1.0/24,ifconfig,netstat -a, ip -br -col add show to check if there is a problem, I can't solve the problem so that it works correctly, why do I get a signal that it works when pinging the IP address that I have assigned but on my host I do not receive a signal and it does not let me access the IP address from my host?

Now let's move on to the third example. I have a problem, I want to implement ipvlan l2 and the same thing happens to me as the second example. It doesn't work on the host of my system, but on the container it works when pinging the IP address.


```
version: '3.8'

services:
ivlan2:
profiles:
- "net9"
image: nginx
networks:
ip-vlan:
ipv4_address: 192.168.1.110
stdin_open: true
tty: true
restart: 'no'
init: true

networks:
ip-vlan:
driver: ipvlan
ipam:
config:
- subnet: 192.168.1.0/24
gateway: 192.168.1.1
driver_opts:
parent: enp1s0
mode: l2
```

1 Reply 1

I notice that you haven't created the VLAN interface on the host machine before running the docker-composefile. You need to create the VLAN interface using the ip link command. You can ping the IP address from within the container but not from the host, it's likely due to the fact that the VLAN interface is not properly configured on the host machine. Make sure that the VLAN interface is up and configured correctly using the ip link and ip address commands.

Looks like you have created the IPvlan interface on the host machine before running the docker-compose file, you need to create the IPvlan interface here too.

Hope this helps

 

Please mark this as helpful or solution accepted to help others
Connect with me https://bigevilbeard.github.io