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 ECS conteneur Amazon pour les images Docker privées
L'agent de ECS conteneur Amazon peut s'authentifier auprès 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 fonctionnalité n'est prise en charge que par les tâches utilisant le type de EC2 lancement.
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 ne AWS provenant pas de conteneurs sur Amazon ECS.
L'agent de ECS conteneur Amazon recherche deux variables d'environnement lors de son lancement :
-
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'Amazon ECS -optimized AMI scannent le /etc/ecs/ecs.config
fichier à la recherche de ces variables lors du lancement de l'instance de conteneur et à chaque démarrage du service (avec la sudo start ecs commande). AMIsqui ne sont pas ECS optimisés pour Amazon 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 ECS conteneur Amazon 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'ECSagent Amazon prend uniquement en charge les données dockercfg
d'authentification au format ci-dessous, sans l'auths
objet. 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 Amazon ECS optimiséAMI) que l'agent de ECS conteneur Amazon charge lors de l'exécution. Si vous n'utilisez pas un agent ECS optimisé pour Amazon AMI et que vous démarrez l'agent manuellementdocker
run, spécifiez le fichier de variables d'environnement avec l'--env-file
option 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 docker
format utilise une JSON représentation du serveur de registre auprès duquel l'agent doit s'authentifier. 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 JSON représentation est la suivante :
{ "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 Amazon ECS optimiséAMI) que l'agent de ECS conteneur Amazon charge lors de l'exécution. Si vous n'utilisez pas un agent ECS optimisé pour AMI Amazon et que vous démarrez l'agent manuellementdocker
run, spécifiez le fichier de variables d'environnement avec l'--env-file
option 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 Amazon, optimisé ECS AMI
-
Connectez-vous à votre instance de conteneur à l'aide deSSH.
-
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 Mettre à jour l'agent de ECS conteneur Amazon. -
Arrêtez le service
ecs
:sudo stop ecs
Sortie :
ecs stop/waiting
-
Redémarrez le service
ecs
.-
Pour Amazon Linux 2 ECS AMI optimisé pour Amazon :
sudo systemctl restart ecs
-
Pour Amazon Linux ECS AMI optimisé pour Amazon :
sudo stop ecs && sudo start ecs
-
-
(Facultatif) Vous pouvez vérifier que l'agent est en cours d'exécution et obtenir des informations sur votre nouvelle instance de conteneur en interrogeant l'opération d'introspection API de l'agent. Pour de plus amples informations, veuillez consulter Introspection des ECS conteneurs Amazon.
curl http://localhost:51678/v1/metadata