Skip to content

Docker sur plusieurs IPs

ip-address-management-topbanner

Dans ce court article, nous allons voir comment utiliser plusieurs adresses IPs pour nos containers Docker afin qu’ils écoutent sur différentes interfaces et permettre d’héberger plusieurs services avec différents nom de domaines.

La plupart des Cloud-providers vous permettent d’ajouter un adresse IP à votre serveur (en plus de celle de base). Je vous laisser chercher comment faire, chez Vultr et OVH, c’est très simple.

Une fois que votre IP additionnel vous à était attribuée (par exemple 45.98.182.2 avec un netmask à 255.255.255.0) on peut l’ajouter sur une interface virtuel nommée dummy0 dans le fichier /etc/network/interfaces :

auto dummy0
iface dummy0 inet static
    address 45.98.182.2
    netmask 255.255.255.0

Il faut aussi ajouter le support de dummy dans /etc/modules :

echo "dummy" >> /etc/modules
depmod -a

Il suffit ensuite de monter notre dummy0 avec :

ifup dummy0

Maintenant que notre serveur possède deux interfaces avec un IP publique, on peut héberger nos containers sur des adresses IPs séparées.
On peut par exemple lancer un container nginx sur notre nouvelle interface avec cette commande :

docker run -d -p 45.98.182.2:80:80 nginx

Vous pouvez ensuite essayer de lancer le même container sur votre première IP publique, vous pouvez donc héberger deux containers différents sur le port 80.

Dans un fichier docker-compose.yml, vous pouvez utiliser la même technique :

blog_web:
  image: nginx
  restart: always
  ports:
    - 45.98.182.2:80:80

Grâce à cette manipulation, vous pouvez facilement héberger des applications Web en HTTPS avec des domaines ou sous-domaines différents. Pour ma part, j’ai pu avec ça installer Owncloud et Gogs (Gitlab-like) sur le même serveur grâce à Docker-compose.

llhckr

Published inCloudDockerLinuxTutorielWeb server

Be First to Comment

Laisser un commentaire

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

Proudly hosted with Open-sources Softwares.