Comment augmenter la limite du volume de stockage des conteneurs Docker pour les instances Amazon ECS lancées à partir d'AMI Amazon Linux 1 ?

Date de la dernière mise à jour : 15/10/2020

Je souhaite augmenter la limite du volume de stockage des conteneurs Docker pour les instances Amazon Elastic Container Service (Amazon ECS) lancées à partir d'Amazon Machine Images (AMI) Amazon Linux 1.

Brève description

Par défaut, Docker alloue 10 gibioctets (Gio) de stockage à chaque volume créé sur une instance de conteneur Amazon ECS. Si un volume atteint la limite de 10 Gio, vous ne pouvez plus écrire de données sur ce volume sans provoquer le blocage de l’instance de conteneur.

Important : cet article vous concerne si vous utilisez des AMI Amazon Linux 1 pour lancer des instances de conteneur dans votre cluster ECS. Les AMI Amazon Linux 2 utilisent le pilote de stockage overlay2 pour Docker, ce qui vous donne une taille de stockage de base de l'espace restant sur votre disque. Amazon Linux 1 ne sera plus pris en charge après le 31 décembre 2020.

Résolution

Remarque : les instructions suivantes s'appliquent aux instances utilisant le pilote de stockage devicemapper.

1.    Ouvrez la console Amazon ECS.

2.    Dans le volet de navigation, sélectionnez Clusters.

3.    Sélectionnez le cluster incluant l’instance de conteneur pour laquelle vous souhaitez augmenter la limite de stockage des volumes.

4.    Choisissez la vue ECS Instances (Instances ECS).

5.    Connectez-vous à votre instance de conteneur avec SSH.

6.    Pour voir la taille de stockage de vos volumes, exécutez la commande suivante :

sudo lsblk

Le résultat devrait être similaire à celui-ci :

NAME                                                               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1                                                            259:1    0    8G  0 disk 
├─nvme0n1p1                                                        259:2    0    8G  0 part /
└─nvme0n1p128                                                      259:3    0    1M  0 part 
nvme1n1                                                            259:0    0   22G  0 disk 
└─nvme1n1p1                                                        259:4    0   22G  0 part 
  ├─docker-docker--pool_tdata                                      253:1    0 21.7G  0 lvm  
  │ └─docker-docker--pool                                          253:2    0 21.7G  0 lvm  
  │   └─docker-259:2-394380-e76dfeb812faffb7a1b5b9553c76c44b70de4e1da69fadd3b89875fee8a6c624
                                                                   253:3    0   10G  0 dm   /var/lib/docker/devicemapper/mnt/e76dfeb812faffb7a1b5b9553c76c44b70de4e1da69fadd3b89875fee8a6c624
  └─docker-docker--pool_tmeta                                      253:0    0   24M  0 lvm  
    └─docker-docker--pool                                          253:2    0 21.7G  0 lvm  
      └─docker-259:2-394380-e76dfeb812faffb7a1b5b9553c76c44b70de4e1da69fadd3b89875fee8a6c624
                                                                   253:3    0   10G  0 dm   /var/lib/docker/devicemapper/mnt/e76dfeb812faffb7a1b5b9553c76c44b70de4e1da69fadd3b89875fee8a6c624

Remarque : la console indique que la taille des volumes de conteneur est de 10 G (soit l'équivalent de 10 Gio).

7.    Pour augmenter l'allocation de stockage par défaut pour les volumes Docker, définissez l'option de stockage dm.basesize sur une valeur supérieure à 10 Gio. Vous définissez cette valeur dans le fichier de configuration du démon Docker /etc/sysconfig/docker sur l'instance du conteneur.

Important : une fois la nouvelle valeur de l'option dm.basesize définie, toutes les nouvelles images extraites par Docker utilisent cette valeur. Tous les conteneurs créés ou en cours d'exécution avant la modification de la valeur continuent à utiliser la valeur de stockage précédente. Pour plus d'informations sur la spécification de la configuration du démon Docker, consultez la rubrique Démon Docker.

Pour appliquer l'option dm.basesize à tous vos conteneurs, définissez sa valeur avant le démarrage du service Docker. Par exemple, vous pouvez utiliser le script suivant dans les données utilisateur de l’instance Amazon Elastic Compute Cloud (Amazon EC2) pour définir la taille de stockage allouée par défaut sur 20 Gio :

#cloud-boothook
#!/bin/bash

cloud-init-per once docker_options echo 'OPTIONS="${OPTIONS} --storage-opt dm.basesize=20G"' >> /etc/sysconfig/docker

8.    Pour vérifier que la taille de vos nouveaux volumes de conteneur Docker est supérieure à la limite par défaut de 10 Gio, exécutez la commande suivante :

sudo lsblk

Le résultat devrait être similaire à celui-ci :

NAME                                                               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1                                                            259:1    0    8G  0 disk 
├─nvme0n1p1                                                        259:2    0    8G  0 part /
└─nvme0n1p128                                                      259:3    0    1M  0 part 
nvme1n1                                                            259:0    0   22G  0 disk 
└─nvme1n1p1                                                        259:4    0   22G  0 part 
  ├─docker-docker--pool_tdata                                      253:1    0 21.7G  0 lvm  
  │ └─docker-docker--pool                                          253:2    0 21.7G  0 lvm  
  │   └─docker-259:2-394381-13ae906f682ac57dcac9c247d0e1677f6da4f9dc35528b853a84f5dcbf570842
                                                                   253:3    0   20G  0 dm   /var/lib/docker/devicemapper/mnt/13ae906f682ac57dcac9c247d0e1677f6da4f9dc35528b853a84f5dcbf570842
  └─docker-docker--pool_tmeta                                      253:0    0   24M  0 lvm  
    └─docker-docker--pool                                          253:2    0 21.7G  0 lvm  
      └─docker-259:2-394381-13ae906f682ac57dcac9c247d0e1677f6da4f9dc35528b853a84f5dcbf570842
                                                                   253:3    0   20G  0 dm   /var/lib/docker/devicemapper/mnt/13ae906f682ac57dcac9c247d0e1677f6da4f9dc35528b853a84f5dcbf570842

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?