Introducción

a

containers

75.52 - Taller de programación II

Agenda

  • Containers
    • Definición
    • VM's vs Containers
  • Docker
    • Arquitectura
    • Beneficios
    • Usos comunes
    • Detrás de Docker
    • Arquitectura
    • Componentes
    • Ejemplos

Containers

containers

Un contenedor de Linux es un conjunto de procesos separados del resto del sistema, los cuales pueden ejecutarse desde una imagen diferente que proporciona todos los archivos necesarios para que funcionen. Al proporcionar una imagen que contiene todas las dependencias de una aplicación, es portátil y consistente mientras cambia de la etapa de desarrollo a la de prueba y, finalmente, a la de producción.

VM's vs containers

VM's + containers

Encuesta

  • ¿Quién conoce sobre Docker?
  • ¿Quién usa Docker para desarrollo?
  • ¿Quién usa Docker en producción?
  • ¿Quién intentó y se dió por vencido?

arquitectura

beneficios

  • Rápido (deployment, migración, restarts)
  • Seguro
  • Liviano (ahorro de disco & CPU)
  • Open Source (Moby project)
  • Software portable
  • Microservices e integraciones (APIs)
  • Simplifica DevOps
  • Funciones de control de versiones

usos comunes

  • Ambiente de sandbox (develop, test, debug, educación)
  • Continuous Integration & Deployment
  • Para escalar aplicación
  • Desarrollo colaborativo
  • Configuración de infraestructura
  • Desarrollo local
  • Aplicaciones multi-tier
  • PaaS, SaaS

Detras de docker

Componentes

  • (Docker) client
  • daemon
  • engine
  • machine
  • compose
  • swarm
  • registry

Docker client

Es la principal interfaz de usuario con Docker. Acepta comandos del usuario y se comunica ida y vuelta con un daemon Docker.

daemon

Corre en la máquina host. El usuario no interactua directamente con el daemon, sino a través del cliente de Docker con la API RESTful o vía socket.

engine

Un cliente con un daemon como también la herramienta docker-compose. Por lo general se refiere simplemente como "docker".

machine

Es una herramienta que facilita crear hosts Docker en una computadora, en provedores "cloud" y dentro de tu propio data center. Crea servidores, instala Docker y configura el cliente para hablar con ellos.

compose

Es una herramienta para definir y correr aplicaciones complejas con Docker (eg una aplicación multi-container) con un solo archivo.

swarm/kubernetes

Herramienta nativa de clustering para Docker. Pools Swarm junto con varios hosts Docker expuestos como un único Docker host virtual. Escala a multiples hosts.

registry

Un servicio (alojado) que contiene repositorios de imágenes que responde a la Registry API.

La imagen Docker

El contenedor Docker

Archivo dockerfile

Un Dockerfile es un documento de texto que contiene todos los comandos que un usuario puede llamar en la línea de comandos para crear una imagen.

 

FROM komljen/ubuntu
RUN \
  add-apt-repository -y ppa:chris-lea/redis-server && \
  apt-get update && \
  apt-get -y install \
          redis-server && \
  rm -rf /var/lib/apt/lists/*

RUN rm /usr/sbin/policy-rc.d
CMD ["/usr/bin/redis-server"]

EXPOSE 6379

Comandos básicos de Docker

 

 
// Información general
man docker // man docker-run
docker help // docker help run
docker info
docker version
docker network ls

// Imágenes
docker images // docker [IMAGE_NAME]
docker pull [IMAGE] // docker push [IMAGE]

// Containers
docker run
docker ps // docker ps -a, docker ps -l
docker stop/start/restart [CONTAINER]
docker stats [CONTAINER]
docker top [CONTAINER]
docker port [CONTAINER]
docker inspect [CONTAINER]
docker inspect -f "{{ .State.StartedAt }}" [CONTAINER]
docker rm [CONTAINER]

Tips de DockeR

  • Optimizar containers (ver fromlatest.io y imagelayers.io)
  • Crear tu propia y pequeña base de imagenes
  • Los containers no son Virtual Machines
  • Imágenes full stack VS 1 proceso por Container
  • Crear tu registro privado
  • Crear shortcuts para comandos

Recursos

Preguntas?

¿Preguntas?

Introducción a containers

By Agustin Rojas

Introducción a containers

  • 149