amazon web services - orquestador - ¿Cómo uso los registros de Docker inseguros con Amazon EC2 Container Service(ECS)?
ecs container (1)
Usamos un registro Docker dentro de AWS VPC al que no se puede acceder de forma externa. Queremos poder iniciar tareas en ECS desde este registro, sin embargo, vemos que el servicio solo está en estado PENDIENTE porque el daemon de Docker no puede acceder al registro.
He encontrado una especie de solución al cambiar los datos de usuario de la configuración de inicio, pero no parece que lo esté haciendo de la mejor manera:
#!/bin/bash
echo ECS_CLUSTER=MY_CLUSTER_NAME >> /etc/ecs/ecs.config
echo OPTIONS=--insecure-registry=insecure.registry.hostname:5000 > /etc/sysconfig/docker
service docker restart
docker start ecs-agent
Esto funciona perfectamente, y puedo ver que mi tarea se está ejecutando como se esperaba. Simplemente no creo que esta sea necesariamente la mejor manera de hacerlo.
AWS me señaló este artículo que trata sobre la autenticación con registros privados, pero no busco autenticarme, solo para que Docker ignore el hecho de que estoy usando un registro inseguro (es decir, no HTTPS).
¿Alguien tiene una solución mejor?
Gracias
Ya he hablado más con AWS y tengo la siguiente solución:
Puede hacer algo como establecer opciones de --insecure-registry
(incluido --insecure-registry
) con un script de datos de usuario que se ejecuta al arrancar. Por ejemplo, --insecure-registry
se puede establecer con un script como el siguiente:
#cloud-config
bootcmd:
- cloud-init-per instance $(echo "OPTIONS=/"--insecure-registry=hostname:5000/"" > /etc/sysconfig/docker)
De esta forma se evita la solución anterior al no reiniciar el acoplador.
Con respecto al método inseguro, si usamos un certificado autofirmado, podemos aprovechar esto agregando el certificado al almacén de confianza de CA del sistema o al almacén de confianza especial de Docker.
En Amazon Linux AMI y ECS-optimized AMI, el almacén de confianza de CA del sistema está ubicado en /usr/share/pki/ca-trust-source
o /usr/share/pki/ca-trust-source/anchors
(dependiendo de el formato, vea /usr/share/pki/ca-trust-source/README
para más detalles) y deberá ejecutar el comando update-ca-trust
después de agregar el certificado. La documentación de Docker sobre registros inseguros proporciona más detalles sobre esto:
https://docs.docker.com/reference/commandline/cli/#insecure-registries https://github.com/docker/docker/blob/master/docs/sources/articles/certificates.md
Espero que eso también ayude a otras personas