Bonsoir
@roms
Comment as-tu créer le réseau macvlan ? Possède-t-il suffisament d'adresses Ip potentielles ?
Si c'est le cas, tu vas pouvoir fixer les adresses IP de chaque conteneur.
Il faut cependant savoir que les conteneurs ainsi créés ne pourront pas accéder au NAS et l'inverse est également vrai. Si tu veux que les conteneurs puissent communiquer avec le NAS, il faudra créer une interface virtuelle.
Est-ce que tu as mis en place une telle interface ?
Ensuite, pour fixer une IP sur un conteneur en macvlan, je fais comme dans l'exemple ci-dessous avec mon conteneur AdGuard Home, avec un fichier
docker-compose.yml
(utilisé avec Portainer, ou en ligne de commande avec
docker-compose up -d
:
YAML:
---
version: "2.4"
services:
adguardhome_macvlan:
image: adguard/adguardhome:latest # https://github.com/AdguardTeam/AdGuardHome
# https://github.com/AdguardTeam/AdGuardHome/wiki/Docker
container_name: adguardhome_macvlan
hostname: AdGuard-Home--DS920Plus # Permet d'avoir un nom pour le conteneur dans AdGuard lui même (sinon c'est une chaine aléatoire)
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Paris
- LANG=fr_FR.UTF8
- LANGUAGE=fr_FR.UTF8
# ---------------------------------------------------------------------------------
# Le label ci-dessous permet à Watchtower de faire les mises à jour automatiquement
# Cela peut-être supprimé si Watchtower n'est pas utilisé.
labels:
- "com.centurylinklabs.watchtower.enable=true"
# ---------------------------------------------------------------------------------
volumes:
- "/volume1/docker/adguardhome_macvlan/work:/opt/adguardhome/work"
- "/volume1/docker/adguardhome_macvlan/conf:/opt/adguardhome/conf"
# ports:
# - "953:53"
# - "967:67/udp"
# - "968:68"
# - "8080:80/tcp"
# - "9443:443/tcp"
# - "9853:853/tcp"
# - "3030:3000/tcp"
networks:
macvlan-network:
ipv4_address: 192.168.2.210 # Mettre ici l'IP macvlan définie dans les scripts
restart: unless-stopped
healthcheck:
test: "/bin/netstat -pant | /bin/grep 53"
interval: 45s
timeout: 30s
retries: 3
networks:
macvlan-network: # Ce réseau devra bien entendu être créé avant avec le script
external: true
Pour résumer, dans ton service tu dois spécifier le nom de ton réseau macvlan avec :
YAML:
networks:
macvlan-network:
ipv4_address: 192.168.2.210 # Mettre ici l'IP macvlan définie dans les scripts
et à la fin du fichier, tu mets une section
networks
qui contient :
YAML:
networks:
macvlan-network: # Ce réseau devra bien entendu être créé avant avec le script
external: true