an open-source project that automates the deployment of software applications inside containers by providing an additional layer of abstraction and automation of OS-level virtualization on Linux.
Es una herramienta software
Permite desarrollar y empaquetar el código junto con todas sus dependencias en una imagen
Uno o varios contenedores pueden ejecutar de forma aislada una imagen
Los contenedores parecen máquinas virtuales, pero no tienen la sobrecarga de estas últimas y son por lo tanto más eficientes.
Note:
No se pueden migrar las máquinas directamente entre AWS y Google Cloud, por ejemplo.
Virtualización del sistema operativo
Para poder utilizar contenedores, es necesario que el sistema operativo disponga de esta característica.
cgroups
cgroup
de forma aislada dispone de:
Note:
El sistema de archivos que ve un contenedor es la unión de:
Lo que se crea dentro de un contenedor es efímero
La capa escribible no es muy eficiente
tmpfs
Cualquiera de las tres son transparentes para el contenedor
docker
Note:
(p.e. Dockerhub, Google Container Registry, Amazon ECR)
deploy
) la imagen desde el repositorioRecreate
: parar todos los contenedores antiguos y arrancar después los nuevos.Ramped
: ir parando contenedores antiguos y por cada uno parado arrancar uno nuevo.blue/gree
: arrancar todos los nuevos, conmutar el tráfico y detener los antiguosCanary
: arrancar uno nuevo, desviar parte del tráfico y si no hay fallos continuarA/B testing
: permite enviar parte del tráfico a una versión y parte a otra versión diferenteNote:
https://blog.container-solutions.com/kubernetes-deployment-strategies