Cómo administrar nuestro ambiente?
Cómo limitar los recursos de un contenedor?
NOTA: OOMkilled es Out Of Memory killed.
Para eliminar contenedores parados.
# Elimina contenedores parados
$ docker container prune
# Elimina todos los contenedores
$ docker rm -f $(docker ps -aq)
Eliminar redes, volúmenes, imágenes, …
# Para borrar todos las redes, volumenes, ...
$ docker system prune
Eliminar imágenes:
# Elimina todas las imagenes
$ docker rmi -f `docker images -q`
# O en su defecto usa
$ docker system prune -a
Para limitar los recursos de un contenedor usamos.
# Limito el uso de memoria
$ docker run -d --name app --memory 1g platziapp
# Veo cuantos recursos consume docker en mi sistema
$ docker stats
$ docker inspect app
<aside> 📌 Resumen: Hay muchas formas de mantener el entorno, y los recursos, trata de mantener eliminadas las cosas que no este usando para ahorrar la memoria.
</aside>
Qué hace SHELL?
Qué hace EXEC?
Para entender esto, tenemos que ver que esto esta relacionado con el CMD del docker file, dependiendo de la nomenclatura este puede ser SHELL o EXEC.
Shell form: Ejecuta el proceso como hijo de un shell (osea que no es el proceso principal)
FROM ubuntu:trusty
COPY ["loop.sh", "/"]
CMD /loop.sh
$ docker run -it ubuntu bash
Exec form: Ejecuta el comando como principal.
FROM ubuntu:trusty
COPY ["loop.sh", "/"]
CMD ["/loop.sh"]
$ docker exec looper ps -ef
$ docker run -it ubuntu /loop.sh
<aside> 📌 Resumen: Siempre trata de usar el formato EXEC cuando escribas tus docker files, ya que SHELL tiene ciertas desventajas.
</aside>
Qué es ENTRYPOINT?
NOTA: Esto es para usar un binario al cual le podemos pasar parámetros desde el CLI.
<aside> 📌 Resumen: Este es la forma más fácil de tener binarios autocontenido sin tener que instalarlos, solo recuerda usar siempre la forma EXEC.
</aside>