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.
Utilisation de montages liés avec Amazon ECS
Avec les montages liés, un fichier ou un répertoire sur un hôte, tel qu’une instance Amazon EC2, est monté dans un conteneur. Les montages liés sont pris en charge lorsque vous exécutez des tâches sur des instances Fargate ou Amazon EC2. Les montages liés sont liés au cycle de vie du conteneur qui les utilise. Une fois que tous les conteneurs qui utilisent un montage lié sont arrêtés, par exemple lorsqu'une tâche est arrêtée, les données sont supprimées. Pour les tâches hébergées sur des instances Amazon EC2, les données peuvent être liées au cycle de vie de l’instance Amazon EC2 hôte en spécifiant un host et une valeur sourcePath facultative dans votre définition de tâche. Pour de plus amples informations, consultez la section Montages liés
Voici quelques cas d'utilisation courants pour les montages liés.
-
Pour fournir un volume de données vide à monter dans un ou plusieurs conteneurs.
-
Pour monter un volume de données hôte dans un ou plusieurs conteneurs.
-
Pour partager un volume de données d'un conteneur source avec d'autres conteneurs dans la même tâche.
-
Pour exposer un chemin d'accès et son contenu d'un fichier Dockerfile à un ou plusieurs conteneurs.
Considérations relatives à l'utilisation des montages liés
Lorsque vous utilisez des montages liés, tenez compte des éléments suivants.
-
Par défaut, les tâches hébergées sur AWS Fargate une version de plate-forme
1.4.0ou ultérieure (Linux)1.0.0ou ultérieure (Windows) reçoivent un minimum de 20 GiB de stockage éphémère pour les montages liés. Vous pouvez augmenter la quantité totale de stockage éphémère jusqu’à un maximum de 200 Gio en spécifiant le paramètreephemeralStoragedans votre définition de tâche. -
Pour exposer des fichiers d'un fichier Dockerfile à un volume de données lorsqu'une tâche est exécutée, le plan de données Amazon ECS recherche une directive
VOLUME. Si le chemin absolu spécifié dans la directiveVOLUMEest le même que lecontainerPathspécifié dans la définition de tâche, les données du chemin de directiveVOLUMEsont copiées sur le volume de données. Dans l'exemple Dockerfile suivant, un fichier nomméexamplefiledans le répertoire/var/log/exportedest écrit sur l'hôte, puis monté à l'intérieur du conteneur.FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN mkdir -p/var/log/exportedRUN touch/var/log/exported/examplefileVOLUME ["/var/log/exported"]Par défaut, les autorisations de volume sont définies sur
0755et le propriétaire en tant queroot. Vous pouvez personnaliser ces autorisations dans le fichier Dockerfile. L'exemple suivant définit le propriétaire du répertoire en tant quenode.FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN yum install -y shadow-utils && yum clean all RUN useraddnodeRUN mkdir -p /var/log/exported && chownnode:node/var/log/exported RUN touch /var/log/exported/examplefile USERnodeVOLUME ["/var/log/exported"] -
Pour les tâches hébergées sur des instances Amazon EC2, lorsque les valeurs
hostetsourcePathne sont pas spécifiées, le démon Docker gère le montage lié à votre place. Lorsqu'aucun conteneur ne fait référence à ce montage lié, le service de nettoyage des tâches de l'agent de conteneur Amazon ECS finit par le supprimer. Par défaut, cela se produit trois heures après la sortie du conteneur. Toutefois, vous pouvez configurer cette durée avec la variable de l'agentECS_ENGINE_TASK_CLEANUP_WAIT_DURATION. Pour de plus amples informations, veuillez consulter Configuration de l'agent de conteneur Amazon ECS. Si vous avez besoin de conserver ces données au-delà du cycle de vie de conteneur, spécifiez une valeursourcePathpour le montage lié. -
Pour les tâches hébergées sur les instances gérées Amazon ECS, certaines parties du système de fichiers racine sont en lecture seule. Read/write les montages par liaison doivent utiliser des répertoires inscriptibles, par exemple
/varpour les données persistantes ou/tmppour les données temporaires. Toute tentative de création de montages par read/write liaison vers d'autres répertoires entraîne l'échec du lancement de la tâche avec une erreur similaire à la suivante :error creating empty volume: error while creating volume path '/path': mkdir /path: read-only file systemLes montages de liaison en lecture seule (configurés
"readOnly": truedans lemountPointsparamètre) peuvent pointer vers n'importe quel répertoire accessible sur l'hôte.Pour consulter la liste complète des chemins accessibles en écriture, vous pouvez exécuter une tâche sur une instance gérée Amazon ECS et l'utiliser pour inspecter la table de montage de l'instance. Créez une définition de tâche avec les paramètres suivants pour accéder au système de fichiers hôte :
{ "pidMode": "host", "containerDefinitions": [{ "privileged": true,...}] }Exécutez ensuite les commandes suivantes depuis le conteneur :
# List writable mounts cat /proc/1/root/proc/1/mounts | awk '$4 ~ /^rw,/ || $4 == "rw" {print $2}' | sort # List read-only mounts cat /proc/1/root/proc/1/mounts | awk '$4 ~ /^ro,/ || $4 == "ro" {print $2}' | sortImportant
Le
privilegedparamètre accorde au conteneur des fonctionnalités étendues sur l'hôte, équivalentes à un accès root. Dans cet exemple, il est utilisé pour inspecter la table de montage de l'hôte à des fins de diagnostic. Pour de plus amples informations, veuillez consulter Évitez d'exécuter des conteneurs dotés de privilèges (Amazon EC2).Pour plus d'informations sur l'exécution interactive de commandes dans des conteneurs, consultezSurveillance des conteneurs Amazon ECS avec ECS Exec.