04-25-2024 10:35 AM - last edited on 04-25-2024 10:41 AM by Jimena Saez
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
```
04-27-2024 05:57 AM
I notice that you haven't created the VLAN interface on the host machine before running the docker-compose
file. 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
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide