Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configurazione delle istanze di ECS container Amazon per immagini Docker private
L'agente ECS container Amazon può autenticarsi con registri privati, utilizzando l'autenticazione di base. Quando si abilita l'autenticazione dei registri privati, puoi utilizzare le immagini Docker private nelle tue definizioni di attività. Questa funzionalità è supportata solo dalle attività che utilizzano il EC2 tipo di avvio.
Un altro metodo per abilitare l'autenticazione del registro privato consiste nell' AWS Secrets Manager archiviare in modo sicuro le credenziali del registro privato e quindi farvi riferimento nella definizione del contenitore. In questo modo le attività possono utilizzare immagini da repository privati. Questo metodo supporta attività che utilizzano i tipi di avvio EC2 o Fargate. Per ulteriori informazioni, consulta Utilizzo di immagini non AWS containerizzate in Amazon ECS.
L'agente ECS container Amazon cerca due variabili di ambiente all'avvio:
-
ECS_ENGINE_AUTH_TYPE
, che specifica il tipo di dati di autenticazione inviati. -
ECS_ENGINE_AUTH_DATA
, che contiene le credenziali di autenticazione effettive.
Le varianti Linux di Amazon ECS -optimized AMI scansionano il /etc/ecs/ecs.config
file alla ricerca di queste variabili all'avvio dell'istanza del contenitore e ogni volta che il servizio viene avviato (con il sudo start ecs comando). AMIsche non sono ECS ottimizzate per Amazon dovrebbero archiviare queste variabili di ambiente in un file e passarle con l'--env-file
opzione al docker run comando che avvia l'agente contenitore.path_to_env_file
Importante
Non è consigliabile inserire queste variabili di ambiente di autenticazione ad esempio, avviarle con dati EC2 utente Amazon o passarle con l'--env
opzione al docker run comando. Questi metodi non sono ideali per i dati sensibili, come le credenziali di autenticazione. Per informazioni sull'aggiunta sicura delle credenziali di autenticazione alle istanze di container, consulta Archiviazione della configurazione dell'istanza del ECS contenitore Amazon in Amazon S3.
Formati di autenticazione
Sono disponibili due formati per l'autenticazione di registri privati, dockercfg
e docker
.
Formato di autenticazione dockercfg
Il formato dockercfg
utilizza le informazioni di autenticazione archiviate nel file di configurazione che viene creato quando esegui il comando docker
login. Puoi creare questo file eseguendo il comando docker
login sul sistema locale e inserendo il nome utente, la password e l'indirizzo e-mail del registro. Puoi inoltre effettuare l'accesso a un'istanza di container ed eseguire il comando qui. A seconda della tua versione Docker, questo file viene salvato come ~/.dockercfg
o ~/.docker/config.json
.
cat ~/.docker/config.json
Output:
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "zq212MzEXAMPLE7o6T25Dk0i
"
}
}
}
Importante
Le nuove versioni di Docker creano un file di configurazione come mostrato in precedenza con un oggetto auths
esterno. L'ECSagente Amazon supporta solo i dati di dockercfg
autenticazione nel formato seguente, senza l'auths
oggetto. Se è installata l'utility jq, puoi estrarre questi dati con il seguente comando: cat ~/.docker/config.json | jq
.auths
cat ~/.docker/config.json | jq .auths
Output:
{
"https://index.docker.io/v1/": {
"auth": "zq212MzEXAMPLE7o6T25Dk0i
",
"email": "email@example.com"
}
}
Nell'esempio precedente, le seguenti variabili di ambiente devono essere aggiunte al file delle variabili di ambiente (/etc/ecs/ecs.config
per Amazon ECS -optimizedAMI) che l'agente ECS container Amazon carica in fase di esecuzione. Se non utilizzi un programma ECS ottimizzato per Amazon AMI e stai avviando l'agente manualmente condocker
run, specifica il file della variabile di ambiente con l'--env-file
opzione quando avvii l'agente.path_to_env_file
ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"
zq212MzEXAMPLE7o6T25Dk0i
","email":"email@example.com
"}}
Puoi configurare più registri privati con la seguente sintassi:
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
"}}
Formato di autenticazione docker
Il docker
formato utilizza una JSON rappresentazione del server di registro con cui l'agente deve autenticarsi. Include anche i parametri di autenticazione richiesti da tale registro (ad esempio il nome utente, la password e l'indirizzo e-mail per l'account). Per un account Docker Hub, la JSON rappresentazione è simile alla seguente:
{ "https://index.docker.io/v1/": { "username": "
my_name
", "password": "my_password
", "email": "email@example.com
" } }
In questo esempio, le seguenti variabili di ambiente devono essere aggiunte al file delle variabili di ambiente (/etc/ecs/ecs.config
per Amazon ECS -optimizedAMI) che l'agente ECS container Amazon carica in fase di esecuzione. Se non utilizzi un programma ECS ottimizzato per AMI Amazon e stai avviando l'agente manualmente condocker
run, specifica il file della variabile di ambiente con l'--env-file
opzione quando avvii l'agente.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
"}}
Puoi configurare più registri privati con la seguente sintassi:
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
"}}
Procedura
Utilizza la procedura seguente per attivare i registri privati per le istanze di container.
Per abilitare i registri privati in formato ottimizzato per Amazon ECS AMI
-
Accedi all'istanza del tuo contenitore utilizzando. SSH
-
Apri il file
/etc/ecs/ecs.config
e aggiungi i valoriECS_ENGINE_AUTH_TYPE
edECS_ENGINE_AUTH_DATA
per il registro e l'account:sudo vi /etc/ecs/ecs.config
In questo esempio si esegue l'autenticazione di un account utente 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
"}} -
Controlla se il tuo agente utilizza la variabile di ambiente
ECS_DATADIR
per salvarne lo stato:docker inspect ecs-agent | grep ECS_DATADIR
Output:
"ECS_DATADIR=/data",
Importante
Se il comando precedente non restituisce la variabile di ambiente
ECS_DATADIR
, è necessario arrestare qualsiasi attività in esecuzione in questa istanza di container prima di arrestare l'agente. Gli agenti più nuovi con la variabile di ambienteECS_DATADIR
salvano il proprio stato e puoi arrestarli e avviarli mentre le attività vengono eseguite senza problemi. Per ulteriori informazioni, consulta Aggiornamento dell'agente ECS container Amazon. -
Arresta il servizio
ecs
:sudo stop ecs
Output:
ecs stop/waiting
-
Riavvia il servizio
ecs
.-
Per Amazon Linux 2 ECS AMI ottimizzato per Amazon:
sudo systemctl restart ecs
-
Per Amazon Linux ECS AMI ottimizzato per Amazon:
sudo stop ecs && sudo start ecs
-
-
(Facoltativo) È possibile verificare che l'agente sia in esecuzione e visualizzare alcune informazioni sulla nuova istanza del contenitore interrogando l'operazione di introspezione API dell'agente. Per ulteriori informazioni, consulta Introspezione dei ECS container Amazon.
curl http://localhost:51678/v1/metadata