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.
Configuration des instances de conteneur Amazon ECS pour les images Docker privées
L'agent de conteneur Amazon ECS peut authentifier au moyen de registres privés, à l'aide de l'authentification de base. Lorsque vous activez l'authentification de registres privés, vous pouvez utiliser des images Docker privées dans vos définitions de tâche. Cette fonction est prise en charge uniquement pour les tâches lorsque vous utilisez le type de lancement EC2 .
Une autre méthode d'activation de l'authentification du registre privé consiste AWS Secrets Manager à stocker vos informations d'identification de registre privé en toute sécurité, puis à les référencer dans la définition de votre conteneur. Cela permet à vos tâches d'utiliser des images de référentiels privés. Cette méthode prend en charge les tâches utilisant le type de lancement Fargate EC2 ou le type de lancement Fargate. Pour de plus amples informations, veuillez consulter Utilisation d'images autres que des AWS conteneurs dans Amazon ECS.
Au lancement, l'agent de conteneur Amazon ECS recherche deux variables d'environnement :
-
ECS_ENGINE_AUTH_TYPE
, qui spécifie le type des données d'authentification envoyées. -
ECS_ENGINE_AUTH_DATA
, qui contient les informations d'authentification réelles.
Les variantes Linux de l'AMI optimisée pour Amazon ECS analysent le /etc/ecs/ecs.config
fichier à la recherche de ces variables au lancement de l'instance de conteneur et à chaque démarrage du service (avec la sudo start ecs commande). AMIs qui ne sont pas optimisés pour Amazon ECS doivent stocker ces variables d'environnement dans un fichier et les transmettre avec l'--env-file
option à la docker run commande qui démarre l'agent de conteneur.path_to_env_file
Important
Nous vous déconseillons d'injecter ces variables d'environnement d'authentification au lancement de l'instance avec les données EC2 utilisateur Amazon ou de les transmettre avec l'--env
option à la docker run commande. Ces méthodes ne sont pas appropriées pour les données sensibles, par exemple les informations d'authentification. Pour plus d'informations sur l'ajout en toute sécurité d'informations d'authentification à vos instances de conteneur, consultez Stockage de la configuration de l'instance de conteneur Amazon ECS dans Amazon S3.
Formats d'authentification
Il existe deux formats disponibles pour une authentification de registre privé, dockercfg
et docker
.
Format d'authentification dockercfg
Le format dockercfg
utilise les informations d'authentification stockées dans le fichier de configuration qui est créé lorsque vous exécutez la commande docker
login. Pour créer ce fichier, exécutez docker
login sur votre système local et saisissez votre nom d'utilisateur de registre, votre mot de passe et une adresse e-mail. Vous pouvez également vous connecter à une instance de conteneur et y exécuter la commande. Selon votre version de Docker, ce fichier est enregistré sous la forme ~/.dockercfg
ou ~/.docker/config.json
.
cat ~/.docker/config.json
Sortie :
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "zq212MzEXAMPLE7o6T25Dk0i
"
}
}
}
Important
Les versions les plus récentes de Docker créent un fichier de configuration comme illustré ci-après avec un objet auths
externe. L'agent Amazon ECS prend en charge les données d'authentification dockercfg
au format ci-dessous uniquement, sans l'objet auths
. Si l'utilitaire jq est installé, vous pouvez extraire ces données à l'aide de la commande suivante : cat ~/.docker/config.json | jq
.auths
cat ~/.docker/config.json | jq .auths
Sortie :
{
"https://index.docker.io/v1/": {
"auth": "zq212MzEXAMPLE7o6T25Dk0i
",
"email": "email@example.com"
}
}
Dans l'exemple ci-dessus, les variables d'environnement suivantes doivent être ajoutées au fichier de variables d'environnement (/etc/ecs/ecs.config
pour l'AMI optimisée pour Amazon ECS) que l'agent de conteneur Amazon ECS charge au moment de l'exécution. Si vous n'utilisez pas l'AMI optimisée pour Amazon ECS et que vous démarrez l'agent manuellement avec docker
run, spécifiez le fichier de variables d'environnement avec l'option --env-file
lorsque vous démarrez l'agent.path_to_env_file
ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"
zq212MzEXAMPLE7o6T25Dk0i
","email":"email@example.com
"}}
Vous pouvez configurer plusieurs registres privés avec la syntaxe suivante :
ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"
repo.example-01.com
":{"auth":"zq212MzEXAMPLE7o6T25Dk0i
","email":"email@example-01.com
"},"repo.example-02.com
":{"auth":"fQ172MzEXAMPLEoF7225DU0j
","email":"email@example-02.com
"}}
Format d'authentification docker
Le format docker
utilise une représentation JSON du serveur de registre que l'agent doit utiliser pour l'authentification. Il inclut également les paramètres d'authentification requis par ce registre (par exemple, nom d'utilisateur, mot de passe et adresse e-mail pour ce compte). Pour un compte Docker Hub, la représentation JSON se présente comme suit :
{ "https://index.docker.io/v1/": { "username": "
my_name
", "password": "my_password
", "email": "email@example.com
" } }
Dans cet exemple, les variables d'environnement suivantes doivent être ajoutées au fichier de variables d'environnement (/etc/ecs/ecs.config
pour l'AMI optimisée pour Amazon ECS) que l'agent de conteneur Amazon ECS charge au moment de l'exécution. Si vous n'utilisez pas l'AMI optimisée pour Amazon ECS et que vous démarrez l'agent manuellement avec docker
run, spécifiez le fichier de variables d'environnement avec l'option --env-file
lorsque vous démarrez l'agent.path_to_env_file
ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"
my_name
","password":"my_password
","email":"email@example.com
"}}
Vous pouvez configurer plusieurs registres privés avec la syntaxe suivante :
ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"
repo.example-01.com
":{"username":"my_name
","password":"my_password
","email":"email@example-01.com
"},"repo.example-02.com
":{"username":"another_name
","password":"another_password
","email":"email@example-02.com
"}}
Procédure
Utilisez la procédure suivante pour activer les registres privés pour vos instances de conteneur.
Pour activer les registres privés dans l'AMI optimisée pour Amazon ECS
-
Connectez-vous à votre instance de conteneur à l'aide de SSH.
-
Ouvrez le fichier
/etc/ecs/ecs.config
et ajoutez les valeursECS_ENGINE_AUTH_TYPE
etECS_ENGINE_AUTH_DATA
pour votre registre et votre compte :sudo vi /etc/ecs/ecs.config
Cet exemple authentifie un compte d'utilisateur Docker Hub :
ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"
my_name
","password":"my_password
","email":"email@example.com
"}} -
Vérifiez si votre agent utilise la variable d'environnement
ECS_DATADIR
pour enregistrer son état :docker inspect ecs-agent | grep ECS_DATADIR
Sortie :
"ECS_DATADIR=/data",
Important
Si la commande précédente ne renvoie pas la variable d'environnement
ECS_DATADIR
, vous devez arrêter toutes les tâches en cours d'exécution sur cette instance de conteneur avant d'arrêter l'agent. Les agents les plus récents avec la variable d'environnementECS_DATADIR
enregistrent leur état et peuvent être arrêtés et démarrés sans problèmes tandis que des tâches sont en cours d'exécution. Pour de plus amples informations, veuillez consulter Mise à jour de l'agent de conteneur Amazon ECS. -
Arrêtez le service
ecs
:sudo stop ecs
Sortie :
ecs stop/waiting
-
Redémarrez le service
ecs
.-
Pour l'AMI Amazon Linux 2 optimisée pour Amazon ECS :
sudo systemctl restart ecs
-
Pour l'AMI Amazon Linux optimisée pour Amazon ECS :
sudo stop ecs && sudo start ecs
-
-
(Facultatif) Vous pouvez vérifier que l'agent est en cours d'exécution et consulter des informations sur votre nouvelle instance de conteneur en interrogeant l'opération API d'introspection d'agent. Pour de plus amples informations, veuillez consulter Introspection des conteneurs Amazon ECS.
curl http://localhost:51678/v1/metadata