¿Cuál es la forma actual de instalar Docker en una instancia de AWS EC2 que ejecuta la AMI?Ha habido un anuncio de Docker Enterprise Edition y ahora quiero saber si algo ha cambiado.Hasta ahora he estado usando yum install docker y obtenga una versión de Docker en 1.12.6, build 7392c3b/1.12.6 ahora mismo (3/3/2017). Obstante, el repositorio de Docker en GitHub me dice que ya hay versiones más nuevas.
Recuerdo que el repositorio oficial de Docker (paquete) tenía un paquete llamado docker-engine reemplazar docker hace algún tiempo, y ahora parecen dividir el paquete en docker-ce y docker-ee, donde, por ejemplo, "Docker Community Edition (Docker CE) no es compatible con Red Hat Enterprise Linux." [Fuente]
Entonces, ¿es correcto o seguirá siendo correcto usar lo anterior para obtener la última versión estable de Docker en instancias EC2 que ejecutan la AMI o necesito extraer el paquete de otro lugar (y, de ser así, cuál, CE o EE)?
Para que Docker se ejecute en la AMI de AWS, debe seguir los pasos a continuación (todos estos son suponiendo que haya iniciado sesión en la instancia EC2).
Actualice los paquetes de su instancia
[ec2-user ~]$ sudo yum update -y
Instalar Docker
[ec2-user ~]$ sudo yum install docker -y
Iniciar el servicio Docker
[ec2-user ~]$ sudo service docker start
Agregue el usuario ec2 al grupo de docker para que pueda ejecutar comandos de Docker sin usar sudo.
[ec2-user ~]$ sudo usermod -a -G docker ec2-user
A continuación, debería poder ejecutar todos los comandos de Docker sin necesidad de sudo. Después de ejecutar el cuarto comando, tuve que cerrar sesión y volver a iniciar sesión para que el cambio surta efecto.
La parte más difícil de resolver todo esto fue el requisito de contenedor-selinux. Solo tiene que encontrar la última versión en http://mirror.centos.org/centos/7/extras/x86_64/Packages/ e instálalo primero. Además, las instancias EC2 pueden no tener un generador de entropía adecuado, por lo que haveged es posible que sea necesario instalarlo.
La diferencia entre el enfoque que había hecho anteriormente y el enfoque que estoy actualmente hacer con el módulo Terraform es utilizar los paquetes Docker proporcionados por AWS. Esto no incluye el docker-compose completo y lo que no, pero normalmente no necesita esos paquetes en un servidor.
Debido a que estoy usando el que Amazon me había proporcionado, ya no es la última versión 18.09, sino la versión 18.06. Sin embargo, la configuración es más simple y no tengo que ponerme al día con container-selinux.
La única dependencia externa que uso es EPEL para obtener haveged porque aún necesita una buena fuente aleatoria para algunas aplicaciones.
También confié en los grupos de seguridad de AWS en lugar de configurar explícitamente firewalld y utilicé la configuración de SELinux que está predeterminada en la imagen de AMI.
La pregunta es si puedo seguir así. Como ya se mencionó, me instalará Docker con la versión 1.12, que ya es una, si no más, actualizaciones de versión menores detrás de la última versión estable (1.13, antes de CE / EE) y me pregunto si esto se debe al retraso habitual en la actualización del repositorio o porque la guía y el paquete simplemente están desactualizados, lo que requiere un trabajo de reemplazo realizado por mí (por ejemplo, ¿de alguna manera obtener Docker de su propio repositorio?). También sobre el último anuncio de EE que podría cambiar algo…
Si esa es la verdadera solución a este problema, esto me entristece un poco. Sin embargo, gracias por la pista, todavía no he tenido demasiada experiencia con EC2 para llegar a esta conclusión por mí mismo. Siempre he pensado que es lo mejor usar AMI porque es (debería ser) la imagen más actualizada y adaptada a la virtualización EC2.
Todos los paquetes están actualizados, el núcleo. Sin embargo, encuentro que Ubuntu es mucho más fácil para la instalación de software y el soporte general, hay pocos recursos de Amazon Linux, por lo que las cosas difíciles se hacen aún más difíciles.
@MichaelHampton Amazon Linux está bien para el uso de ECS. Está preconfigurado para el uso de ECS, y el sistema operativo subyacente no importa mucho en ese caso.