¿Cuál es la forma actual de instalar Docker en una instancia de AWS EC2 que ejecuta 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 tengo un Docker versionado en 1.12.6, build 7392c3b/1.12.6
este momento (3/3/2017). Sin embargo, 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
reemplazo hace docker
algún tiempo y ahora parece dividir el paquete docker-ce
y docker-ee
, por ejemplo, "Docker Community Edition (Docker CE) no es compatible con Red Hat Enterprise Linux". [ Fuente ]
Entonces, ¿es o seguirá siendo correcto usar lo anterior para obtener la última versión estable de Docker en instancias EC2 que ejecutan el AMI o necesito extraer el paquete de otro lugar (y si es así, cuál, CE o EE)?
Respuestas:
Para que Docker se ejecute en AWS AMI, debe seguir los pasos a continuación (todos estos suponen que ha ingresado a la instancia EC2).
Actualice los paquetes en su instancia
[ec2-user ~]$ sudo yum update -y
Instalar Docker
[ec2-user ~]$ sudo yum install docker -y
Inicie el servicio Docker
[ec2-user ~]$ sudo service docker start
Agregue el usuario ec2 al grupo de docker para que pueda ejecutar los comandos de Docker sin usar sudo.
[ec2-user ~]$ sudo usermod -a -G docker ec2-user
Entonces debería poder ejecutar todos los comandos de Docker sin necesidad de hacerlo
sudo
. Después de ejecutar el cuarto comando, tuve que cerrar sesión y volver a iniciarla para que el cambio surta efecto.fuente
La parte más difícil de resolver todo esto fue el requisito de contenedor-selinux. Solo encuentre la última versión en http://mirror.centos.org/centos/7/extras/x86_64/Packages/ e instálela primero. Además, las instancias EC2 pueden no tener un generador de entropía adecuado, por lo que es
haveged
posible que deba instalarse.El resto se toma de https://docs.docker.com/install/linux/docker-ce/centos/ con la adición de haveged y firewalld. Todo esto debe hacerse como root de manera
sudo
apropiada.Habilite SELinux modificando
/etc/sysconfig/selinux
para serLuego reinicie su instancia emitiendo
shutdown -r now
La ejecución
sudo docker version
debería rendir a partir del momento de esta publicación ...fuente
Por https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html
Puede ver el historial en https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html
fuente
Además de mi respuesta anterior. Si usa Terraform, también he creado un módulo Terraform que se puede usar para crear un enjambre Docker
https://registry.terraform.io/modules/trajano/swarm-aws/docker
La diferencia entre el enfoque que había hecho anteriormente y el enfoque que estoy haciendo actualmente 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 no necesita esos paquetes normalmente en un servidor.
Debido a que estoy usando el que Amazon 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 protección porque todavía 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 usé la configuración SELinux que está predeterminada en la imagen AMI.
fuente