Utiliser le réseau virtuel de Docker pour les tâches Amazon ECS Linux - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser le réseau virtuel de Docker pour les tâches Amazon ECS Linux

Le mode bridge réseau n'est pris en charge que pour les ECS tâches Amazon hébergées sur EC2 des instances Amazon.

Avec le mode bridge, vous utilisez un pont réseau virtuel pour créer une couche entre l'hôte et la mise en réseau du conteneur. De cette façon, vous pouvez créer des mappages de ports qui remappent un port hôte à un port de conteneur. Les mappages peuvent être statiques ou dynamiques.

Schéma illustrant l'architecture d'un réseau utilisant le mode réseau pont avec mappage statique des ports.

Avec un mappage statique des ports, vous pouvez définir explicitement le port hôte que vous souhaitez mapper à un port de conteneur. À l'aide de l'exemple ci-dessus, le port 80 de l'hôte est mappé au port 3000 du conteneur. Pour communiquer avec l'application conteneurisée, vous envoyez le trafic au port 80 vers l'adresse IP de l'EC2instance Amazon. Du point de vue de l'application conteneurisée, le trafic entrant est visible sur le port 3000.

Si vous souhaitez uniquement modifier le port de trafic, les mappages statiques de ports conviennent. Cependant, cela présente toujours le même inconvénient que l'utilisation du mode réseau host. Vous ne pouvez exécuter qu'une seule instanciation d'une tâche sur chaque hôte. Cela est dû au fait qu'un mappage statique de port ne permet de mapper qu'un seul conteneur sur le port 80.

Pour résoudre ce problème, pensez à utiliser le mode réseau bridge avec un mappage dynamique des ports, comme indiqué dans le schéma suivant.

Schéma illustrant l'architecture d'un réseau utilisant le mode réseau pont avec mappage dynamique des ports.

En ne spécifiant pas de port hôte dans le mappage des ports, Docker peut choisir un port aléatoire et inutilisé dans la plage de ports éphémères et l'attribuer comme port hôte public pour le conteneur. Par exemple, l'application Node.js qui écoute 3000 le port du conteneur peut se voir attribuer un numéro de port aléatoire élevé, par exemple 47760 sur l'EC2hôte Amazon. Cela signifie que vous pouvez exécuter plusieurs copies de ce conteneur sur l'hôte. De plus, chaque conteneur peut se voir attribuer son propre port sur l'hôte. Chaque copie du conteneur reçoit du trafic au port 3000. Toutefois, les clients qui envoient du trafic vers ces conteneurs utilisent les ports hôtes assignés de manière aléatoire.

Amazon vous ECS aide à suivre les ports assignés de manière aléatoire pour chaque tâche. Pour ce faire, il met automatiquement à jour les groupes cibles de l'équilibreur de charge et la découverte des AWS Cloud Map services afin d'obtenir la liste des adresses IP et des ports des tâches. Cela facilite l'utilisation des services fonctionnant en mode bridge utilisant des ports dynamiques.

Cependant, l'un des inconvénients de l'utilisation du mode réseau bridge est qu'il est difficile de verrouiller les communications de service à service. Comme les services peuvent être affectés à n'importe quel port aléatoire et inutilisé, il est nécessaire d'ouvrir de larges plages de ports entre les hôtes. Cependant, il n'est pas facile de créer des règles spécifiques afin qu'un service particulier ne puisse communiquer qu'avec un autre service spécifique. Les services ne disposent d'aucun port spécifique à utiliser pour les règles de mise en réseau des groupes de sécurité.