Cette approche consiste à utiliser soit le macvlan, soit ipvlan Docker network driver. Je préfère macvlan car chaque conteneur peut avoir sa propre adresse MAC mais certaines applications comme VMware n’aiment pas avoir plusieurs adresses MAC pour une seule carte réseau virtuelle et ne routeront pas le trafic correctement.

Réseaux par défaut

Quand vous installez Docker, il crée trois réseaux automatiquement. Vous pouvez lister ces réseaux en utilisant la commande docker network ls :

$ docker network ls

NETWORK ID          NAME                DRIVER
7fca4eb8c647        bridge              bridge
9f904ee27bf5        none                null
cf03ee007fb4        host                host
$

La mise en place est assez rapide. D’abord nous devons déterminer quelque choses.

  • Masque de sous-réseau de votre réseau principal. Utilisons 192.168.1.0/24 pour cet exemple.
  • Passerelle de votre réseau. Utilisons 192.168.1.252 pour cet exemple.
  • Plage d’adresses IP à utiliser pour allouer les IPs sources ( vous pouvez assigner de manière statique des IPs en dehors de cette plage lorsque vous faites un « Docker run » si besoin est). Pour cet exemple j’utiliserai 192.168.1.128/25. Vous aurez besoin d’une tranche d’IPs pour laisser Docker gérer alors vous devez vous assurer que ces IPs ne sont pas utilisées sur votre réseau.
  • Le nom du device que vous voulez utiliser pour le trafic. Pour cet exemple j’utiliserai eth0.
  • Le nom du nouveau réseau Docker que vous allez créer. Utilisons “my net” pour cet exemple.

Ensuite vous créez un nouveau réseau Docker comme ceci :

$ docker network create -d macvlan —-subnet 10.0.0.0/24 --ip-range 10.0.0.128/25 —-gateway 10.0.0.1 -o parent=eth0 mynet

Désormais lorsque vous démarrez des conteneurs, utilisez :

$ docker run —-network mynet .....

Pour plus d’information consultez la documentation Docker : https://docs.docker.com/engine/userguide/networking/get-started-macvlan

Une lacune de cette approche est que macvlan/ipvlan ne semble pas fonctionner très bien avec Docker for Mac. Le HyperKit vm qu’il crée est un peu une boite noire. l’approche macvlan/ipvlan nécessite un réseau plus contrôlé que Docker for Mac ne vous offre. Si vous essayez de faire ceci avec Docker for Mac alors je vous suggèrererai de configurer une Machine Docker. Les docs expliquant comment le faire sont là : https://docs.docker.com/machine/get-started/.

Dans ce scénario, à moins que vous ne définissiez des règles de routage sur votre Mac, vous devriez avoir la machine docker machine qui utilise une interface bridgée à laquelle le réseau macvlan/ipvlan peut être attaché. De mon expérience le besoin d’une seconde NIC NATée à travers l’hôte MacOS n’est pas nécessaire mais vous pouvez arriver à une autre conclusion.

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Blue Captcha Image
Refresh

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.