Estoy tratando de usar AWS EC2 Container Service (ECS) para ejecutar una cuadrícula dockerizada de controlador web (Selenium). De acuerdo con la página de github de docker-selenium , debemos agregar algo de shared memory o mount a volume en el contenedor docker si queremos ejecutar pruebas de ejecución prolongada utilizando el navegador Chrome en la imagen de selenium-node-chrome .
En mi instancia EC2, cuando hago un
df -h Veo que /dev/shm existe y tiene 3.7Gb of available free space . Pero si monto el volumen en mi contenedor de chrome-node usando la propiedad -v /dev/shm:/dev/shm , el navegador ni siquiera aparece cuando ejecuto una prueba. Pero si monto el directorio principal /dev , las pruebas parecen ejecutarse durante unos segundos y luego aparece el mensaje "No se puede acceder a la excepción del navegador" porque el navegador se está cerrando (pude confirmar esto a través de VNC Viewer). Esto me hace darme cuenta de que montar un volumen a través de la interfaz/api de ECS no va a ayudar.
Si inicio directamente la ventana acoplable sin pasar por la ruta ECS pasando la propiedad --shm-size como
docker run --shm-size=2500m ....Las pruebas parecen ejecutarse sin ningún problema.
Sin embargo, ECS claramente no admite la propiedad --shm-size a partir de ahora. Entonces, ¿cómo solucionar o solucionar este problema y seguir usando ECS para pasar la propiedad --shm-size ? ¿Evitar el uso de ECS es la única manera aquí o hay alguna otra manera mejor?
Una solución:
Agregue el comando a continuación (EntryPoint) como la última línea en su dockerfile
ENTRYPOINT shm_dir=/dev/shm;umount $shm_dir;mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=*<size eg. 500m,1Gb>* shm $shm_dir && /bin/bash He probado este cambio en la ventana acoplable local , aunque requiere --privileged o al menos --cap-add SYS_ADMIN . Todavía tengo que probarlo en AWS.