PDF de programación - Contenedores con Docker

Imágen de pdf Contenedores con Docker

Contenedores con Dockergráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 17 de Marzo del 2018)
4.225 visualizaciones desde el 17 de Marzo del 2018
2,8 MB
52 paginas
Creado hace 5a (20/04/2016)
Contenedores con

Dr. Pedro J. Molina
Desarrollador Independiente
@pmolinam

Agenda

Introducción a Docker (teórica)
Introducción a Docker (práctica): manos a ello

1.
2.
3. Docker files
4. Docker CLI
5. Docker-Compose
6. Casos de uso
7. Y más allá…

¿A qué me dedico?

Desarrollador Independiente

 Domain Specific Languages

Colaboro con: http://www.formacion.lemoncode.net

 Generación de código

Anteriormente:

 Microservicios

 JavaScript, TypeScript, C#

 Backends

 Despliegues en nube

 Arquitectura de Software

 Consultoría

 CTO

 DSLs

 App Builders

 Project Manager

 Arquitectura de Software

 DSLs

 DSLs

 Generación de código

Evolución: Aplicaciones

Aplicación cliente-

servido pesada sobre

cliente pesado.

Stack estandarizado:

- SO
- Runtime
- Middleware

Infraestructura
Física Monolítica

1995

2015

Aplicación ligera en
un móvil o tablet.

Ensamblada por
desarrolladores

usando los mejores

servicios
disponibles.

Corriendo en

cualquier conjunto

de recursos
disponibles

(públicos/privados/

o virtualizados)

La nube

 Llego para quedarse

 CPD caros para PYMEs

 Nube = Commodity

 Guerra de precios
 A medio plazo concentración
 Solo quedarán los grandes

El problema que solventa Docker

Static website

nginx 1.5 + modsecurity + openssl + bootstrap 2

User DB

postgresql + pgv8 + v8

Queue

Analytics DB

Redis + redis-sentinel

hadoop + hive + thrift + OpenJDK

s
k
c
a
t
S

f
o
y
t
i
c
i
l



p
i
t
l
u
M

a
p
p
r
o
p
r
i
a
t
e
l
y
?

i

n
t
e
r
a
c
t


D
o

s
e
r
v
i
c
e
s

a
n
d
a
p
p
s




C
a
n


I


m
i
g
r
a
t
e



Background workers

Python 3.0 + celery + pyredis + libcurl + ffmpeg + libopencv + nodejs +

phantomjs

Web frontend

Ruby + Rails + sass + Unicorn

API endpoint

Python 2.7 + Flask + pyredis + celery + psycopg + postgresql-client




f
o
y
t
i
c
i
l

p
i
t
l
u
M



e
r
a
w
d
r
a
h

s
t
n
e
m
n
o
r
i
v
n
e

Development VM

Public Cloud

Production Cluster

QA server

Disaster recovery

q
u
i
c
k
l
y
?

Customer Data Center

Contributor’s laptop

Production Servers

s

m
o
o
t
h
l
y
a
n
d





El problema que solventa Docker

Static website

Web frontend

Background workers

User DB

Analytics DB

Queue

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

Development

VM

QA Server

Single Prod

Server

Onsite
Cluster

Public Cloud

Contributor’s

Customer

laptop

Servers

Símil: Transporte en antes de los años 60

s
d
o
o
G




f
o
y
t
i
c
i
l

p
i
t
l
u
M


f
o
y
t
i
c
i
l
i

p
i
t
l
u
M


r
o
f

s
d
o
h
t
e
m

g
n
i
r
o
t
s
/
g
n
i
t
r
o
p
s
n
a
r
t

n
e
x
t

t
o

s
p
i
c
e
s
)

(
e
.
g
.

c
o
f
f
e
e
b
e
a
n
s






h
o
w
g
o
o
d
s

i

n
t
e
r
a
c
t


D
o


I




w
o
r
r
y
a
b
o
u
t


t
o

t
r
u
c
k
)



(
e
.
g
.

f
r
o
m
b
o
a
t

t
o

t
r
a
n

i



a
n
d

s

m
o
o
t
h
l
y

C
a
n


I

t
r
a
n
s
p
o
r
t

q
u
i
c
k
l
y



Problema N x M  No escala

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

Solución: El Container

Multiplicity of Goods

A standard container that is
loaded with virtually any
goods, and stays sealed until
it reaches final delivery.

Multiplicity of
methods for

transporting/storing

n
e
x
t

t
o

s
p
i
c
e
s
)

(
e
.
g
.

c
o
f
f
e
e
b
e
a
n
s






h
o
w
g
o
o
d
s

i

n
t
e
r
a
c
t


D
o


I




w
o
r
r
y
a
b
o
u
t


…in between, can be loaded and
unloaded, stacked, transported
efficiently over long distances,
and transferred from one mode
of transport to another

i

t
r
a
n

t
o

t
r
u
c
k
)

(
e
.
g
.

f
r
o
m
b
o
a
t

t
o





q
u
i
c
k
l
y
a
n
d

s



m
o
o
t
h
l
y

C
a
n


I

t
r
a
n
s
p
o
r
t


Docker

Static website

User DB

Web frontend

Queue

Analytics DB

Multiplicity of Stacks

An engine that enables any
payload to be encapsulated
as a lightweight, portable,
self-sufficient container…

Multiplicity of

hardware

environments

Do services and apps

interact

appropriately?

…that can be manipulated using
standard operations and run
consistently on virtually any
hardware platform

Can I migrate
smoothly and

quickly

Development

QA server

Customer Data

Public Cloud

VM

Center

Production

Contributor’s

Cluster

laptop

Docker elimina el problema estandarizando

Static website

Web frontend

Background workers

User DB

Analytics DB

Queue

Development

VM

QA Server

Single Prod

Server

Onsite
Cluster

Public Cloud

Contributor’s

Customer

laptop

Servers

Beneficios para desarrolladores

 Entornos limpios, seguros y portables.
 Despliegues reproducibles (sin perdida de dependencias)
 Aislamiento de aplicaciones
 Tests, integración, empaquetado automatizado
 Menores problemas de compatibilidad
 Despliegues rápidos y baratos

 Una Maquina Virtual sin la penalización de una MV

Beneficios para devops

 Configura una vez, corre cientos
 Despliegues estandarizados y repetibles
 Elimina inconsistencias entre entornos (devel, qa, prod,

etc.)

 Permite segregación de responsabilidades
 Mejora la velocidad de CI y CD
 Más ligeros que una MV

Separación de Responsabilidades (SoC)

 Alicia, la Desarrolladora

 Precupada por “que hay

dentro” del container.

 Su código
 Sus librerias
 Su gestor de

paquetes
 Sus Apps
 Sus datos

 Todos los Servidores

Linux son iguales

• Carmen, la Devop

• Preocupada por lo que
hay fuera del contedor

• Logging
• Acceso Remoto
• Monitorización
• Configuración de Red

• Todos los contenedores

se arrancan, para,
copian, mse migran del
mismo modo.

Docker: Las tripas

¿Porqué?

¿Qué es?

• Corre en cualquier sitio (Linux)

• Sin importar version del kernel 2.6.32+
• Sin importar distribución
• Físico, virtual, nube o no.
• Container & Arquitectura de Host deben

emparejar

• Corre cualquier cosa:

• Si corre en el host, corre en el container
• Si corre en un kernel Linux, correrá

• Alto Nivel – MV ligera
• Espacio de proceso propio
• Configuración de red propia
• Puede correr como root
• Puede tener su propio /sbin/init

• Bajo Nivel – chroot con esteroides

• Puede no tener su propio /sbin/init
• Contenedor = proceso aislado
• Comparte Kernel con el host
• No emula dispositivo

Contenedores vs Maquinas Virtuales

App

A

Bins/
Libs

Guest

OS

App
A’

Bins/
Libs

Guest

OS

Guest

OS

App

B

Bins/
Libs

Guest

OS

Guest

OS

VM

Hypervisor (Type 2)

Host OS

Server

Los contenedores están aislados,
pero comparten SO y
opcionalmente binarios y librerías
Da como resultado despliegues mas
rápidos, con menos sobrecoste, más
facilites de migrar y reiniciar.

Container

A
p
p
A



A
p
p
A





A
p
p
B



A
p
p
B





A
p
p
B





A
p
p
B





D
o
c
k
e
r

Bins/Libs

Bins/Libs

Host OS

Server

¿Porqué son contenedores Docker son ligeros?

MVs

App

A

Bins/
Libs

App

A

Bins/
Libs

Guest

OS

Guest

OS

App
A’

Bins/
Libs

Guest
Guest

OS
OS

MVs

Cada pequeño cambio a una Aplicación
Require un nueva máquina virtual.

Contenedores

App

A

A
p
p
Δ



i

B
n
s
/

App

A

Bins/
Libs

App Original

(Sin SO que tome espacio,
recursos o requiera ser
reiniciado)

Copia de

App

No SO.
Puede compatir
bins/libs

App Modificada

Copia con solo las
diferencias entre el
contenedor A y A’

Funcionamiento básico

Push

C
o
n
t
a
n
e
r

A

i

Build

Docker Engine

Host 1 OS (Linux)

Dockerfile

For
A

Source
Code

Repository

Docker

Container

Image
Registry

Search

Pull

Run

C
o
n
t
a
n
e
r

A

i

C
o
n
t
a
n
e
r

B

i

C
o
n
t
a
n
e
r

C

i

D
o
c
k
e
r


Host 2 OS (Linux)

Cambios y actualizaciones

App

A

Bins/
Libs

Base

Container

Image

A
p
p
Δ



i

B
n
s
/

Container
Mod A’

Container
Mod A’’

App
A’’

i

Bins/
B
n
Libs
s
/

Docker Engine

Host is now running A’’

Docker

Container

Image
Registry

A
p
p
Δ



Update

Push

i

B
n
s
/

Docker Engine

App

A

Bins/
Libs

La tecnología bajo Docker

 Linux Kernel

 Servicios de aislamiento de recursos cgroups
 Kernel namespaces
 Union file-systems aufs
 Libvirt, LXC

 Git

 Control de versiones: delta a las imágenes de
V3 …

contenedores

V1

V2

 Registro (Docker Hub)

Glosario Docker:

 Veamos algo de jerga.

Glosario Docker: Dockerfile

# A basic apache server.

FROM ubuntu:14.04

MAINTAINER Kimbro Staken version: 0.1

RUN apt-get update && apt-get install –y apache2

ENV APACHE_LOG_DIR /var/log/apache2

EXPOSE 80

CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

Glosario Docker: Container

 Contenedor

 La aplicación paquetizada, aislada

Glosario Docker: Host (anfitrión)

 Es el porta-contenedores
 Múltiples sabores: local, private cloud, public cloud. Virtual o físico.
 Expone los recursos

Glosario Docker: Imagen

 Fichero binario que contiene todo el

sistema de ficheros de un contenedor.

 Sistema de ficheros Union.

 Estructurado en capas (layers) por

delta.

 https://imagelayers.io

Glosario Docker: Volumen

 Discos o directorios externos que

podemos montaren el
contenedor.

 Recursos externos (alojados en el

host)que sobreviven al
contenedor

 Configuración / Datos / Recursos

Datos

Conf.

Glosario Docker: Registro

 Biblioteca de imágenes de

contenedor

 Listas para ser usadas

 Registro publico

 Compartidas por la comunidad
 Libre acceso

 Registro privado

 Contenedores corporativos o

privados

https://hub.docker.com

Ciclo de vida de un contenedor

StoppedRunningPausedrun / startpauseunpausestop/killcreateDeletedrmrestart Ciclo de vida de una imagen

imagebuilddeletedrmiimport/export*.tar.gzSTDIN/STDOUTload/saveRegistrypull/pushcommit Command Line Interface

Dockerfile. Referencia de comandos

 FROM
 MAINTAINER
 LABEL
 ADD
 COPY
 ENV
 EXPOSE

 USER
 WORKDIR
 VOLUME
 STOPSIGNAL
 ENTRYPOINT
 CMD
 RUN

Reference: https://docs.docker.com/engine/reference/builder

docker. CLI. Referencia de comandos

 help
 build
  • Links de descarga
http://lwp-l.com/pdf9606

Comentarios de: Contenedores con Docker (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad