Configuration des instances de ECS conteneur Amazon pour les images Docker privées - 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.

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 path_to_env_fileoption à la docker run commande qui démarre l'agent de conteneur.

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'--envoption à 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'authsobjet. 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.configpour 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 path_to_env_fileoption lorsque vous démarrez l'agent.

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.configpour 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 path_to_env_fileoption lorsque vous démarrez l'agent.

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
  1. Connectez-vous à votre instance de conteneur à l'aide deSSH.

  2. Ouvrez le fichier /etc/ecs/ecs.config et ajoutez les valeurs ECS_ENGINE_AUTH_TYPE et ECS_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"}}
  3. 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'environnement ECS_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.

  4. Arrêtez le service ecs :

    sudo stop ecs

    Sortie :

    ecs stop/waiting
  5. 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
  6. (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