Está en la página 1de 27

Contenedores

Administración de Sistemas Operativos y Redes

Ing. David Guevara A, Mg

UTA

Ing. David Guevara A, Mg (UTA) Contenedores 1 / 27


Contenedores

Redhat
“La complejidad cada vez mayor de las aplicaciones y la necesidad de
acelerar el desarrollo están ejerciendo aún más presión sobre la
infraestructura, procesos y equipos de TI.”

Ing. David Guevara A, Mg (UTA) Contenedores 2 / 27


Docker

Docker es un proyecto de código abierto que permite automatizar el


despliegue de aplicaciones dentro de “contenedores”. Éste contenedor
empaqueta todo lo necesario para que uno o más procesos (servicios,
aplicaciones) funcionen: código, herramientas del sistema, bibliotecas del
sistema, dependencias, etc. Ésto garantiza que siempre se podrá ejecutar,
independientemente del entorno en el que se desea desplegarlo.

Ing. David Guevara A, Mg (UTA) Contenedores 3 / 27


Historia

Salomon Hykes comenzó Docker como un proyecto interno dentro de


dotCloud, empresa enfocada a PaaS (plataforma como servicio).
Fué liberado como código abierto en marzo de 2013.
Con el lanzamiento de la versión 0.9 (en marzo de 2014) Docker dejó
de utilizar LXC como entorno de ejecución por defecto y lo reemplazó
con su propia librería, libcontainer (escrita en Go), que se encarga de
hablar directamente con el kernel.
Se trata de un nuevo modelo de virtualización que crea una capa de
abstracción con el S.O.

Ing. David Guevara A, Mg (UTA) Contenedores 4 / 27


Requerimientos

Docker funciona de forma nativa en entornos Linux a partir de la


versión 3.8 del Kernel.
Funciona sólo para arquitecturas de 64 bits.
Existe versiones para Docker para Windows y Linux

Ing. David Guevara A, Mg (UTA) Contenedores 5 / 27


Comunidad Docker

1200 contribuidores al proyecto Docker


100,000 aplicaciones dockerizadas
Entre 3 y 4 millones de desarrolladores usando Docker
300 millones de descargas
32,000 proyectos relacionados con Docker
El 70% de las empresas TI están adoptando Docker (fuente: SD
Times)

Ing. David Guevara A, Mg (UTA) Contenedores 6 / 27


Ventajas

Ing. David Guevara A, Mg (UTA) Contenedores 7 / 27


Compartativa con SO y VM

Ing. David Guevara A, Mg (UTA) Contenedores 8 / 27


Elementos

Docker depende de tres elementos principales:


Imágenes
Las imágenes son plantillas de solo lectura que contienen un entorno de
tiempo de ejecución que incluye bibliotecas y aplicaciones de aplicaciones.
Las imágenes se usan para crear contenedores. Las imágenes se pueden
crear, actualizar o descargar para su consumo inmediato.

Registros
Los registros almacenan imágenes para uso público o privado. El conocido
registro público es Docker Hub, y almacena múltiples imágenes
desarrolladas por la comunidad, pero se pueden crear registros privados
para apoyar el desarrollo de imágenes internas a discreción de la compañía.

Ing. David Guevara A, Mg (UTA) Contenedores 9 / 27


Elementos

Contenedores
Los contenedores son entornos de espacio de usuario segregados para
ejecutar aplicaciones aisladas de otras aplicaciones que comparten el mismo
sistema operativo host.

Ing. David Guevara A, Mg (UTA) Contenedores 10 / 27


Imágenes de Docker Container

Cada imagen en Docker consta de una serie de capas que se combinan


en lo que las aplicaciones contenedorizadas ven como un único sistema
de archivos virtual.
Las imágenes de Docker son inmutables; cualquier capa adicional
añadida sobre las capas preexistentes anula sus contenidos sin
cambiarlos directamente.
Por lo tanto, cualquier cambio realizado en una imagen de contenedor
se destruye a menos que se genere una nueva imagen utilizando la
capa adicional existente.
El sistema de archivos UnionFS proporciona contenedores con una
única vista del sistema de archivos de las múltiples capas de imágenes.

Ing. David Guevara A, Mg (UTA) Contenedores 11 / 27


Imágenes de Docker Container

En pocas palabras, para crear una nueva imagen, hay dos enfoques:
Uso de un contenedor en ejecución
Se usa una imagen inmutable para iniciar una nueva instancia de
contenedor y cualquier cambio o actualización que necesite este
contenedor se realiza en una capa adicional de lectura / escritura.
Los comandos de Docker se pueden emitir para almacenar esa capa de
lectura / escritura sobre la imagen existente para generar una nueva
imagen.
Debido a su simplicidad, este enfoque es la forma más fácil de crear
imágenes, pero no es un enfoque recomendado, ya que el tamaño de la
imagen puede ser grande debido a archivos innecesarios, como archivos
temporales y registros.

Ing. David Guevara A, Mg (UTA) Contenedores 12 / 27


Imágenes de Docker Container

Uso de un archivo Docker


Alternativamente, las imágenes del contenedor se pueden construir a
partir de una imagen base usando un conjunto de pasos llamados
instrucciones.
Cada instrucción crea una nueva capa en la imagen que se usa para
construir la imagen final del contenedor.
Este es el enfoque sugerido para crear imágenes, porque controla qué
archivos se agregan a cada capa.

Ing. David Guevara A, Mg (UTA) Contenedores 13 / 27


Instalación

su do yum i n s t a l l d o c k e r

Ing. David Guevara A, Mg (UTA) Contenedores 14 / 27


Docker

[ r o o t @ s r v s o r 2 ~ ]# docker v e r s i o n
Client :
Version : 1.13.1
API v e r s i o n : 1.26
Package v e r s i o n : d o c k e r −1.13.1 −63. g i t 9 4 f 4 2 4 0 . e l 7 . c e n t o s . x86_64
Go v e r s i o n : go1 . 9 . 4
G i t commit : 94 f 4 2 4 0 / 1 . 1 3 . 1
Built : F r i May 18 1 5 : 4 4 : 3 3 2018
OS/ Arch : l i n u x /amd64

Server :
Version : 1.13.1
API v e r s i o n : 1 . 2 6 ( minimum v e r s i o n 1 . 1 2 )
Package v e r s i o n : d o c k e r −1.13.1 −63. g i t 9 4 f 4 2 4 0 . e l 7 . c e n t o s . x86_64
Go v e r s i o n : go1 . 9 . 4
G i t commit : 94 f 4 2 4 0 / 1 . 1 3 . 1
Built : F r i May 18 1 5 : 4 4 : 3 3 2018
OS/ Arch : l i n u x /amd64
Experimental : false
[ r o o t @ s r v s o r 2 ~ ]#

Ing. David Guevara A, Mg (UTA) Contenedores 15 / 27


Docker

docker i n f o # Información del sistema


d o c k e r # l i s t a l o s p o s i b l e s comandos de d o c k e r

Ing. David Guevara A, Mg (UTA) Contenedores 16 / 27


Docker

Trabajando con imágenes


[ r o o t @ s r v s o r 2 ~ ]# d o c k e r i m a g e s
REPOSITORY TAG IMAGE ID CREATED SIZE
docker . io / wordpress latest cc04fd2e885d 11 d a y s ago 409 MB
docker . io / centos latest e934aafc2206 2 months ago 199 MB
d o c k e r . i o / u i f d / u i −f o r −d o c k e r latest 9 65 9 40 f 9 8 f a 5 21 months ago 8 . 1 MB
[ r o o t @ s r v s o r 2 ~ ]#

Ing. David Guevara A, Mg (UTA) Contenedores 17 / 27


Docker

Una imagen está formada por capas (layers) que se montan unas
encima de otras. Todas en modo sólo lectura.
La última capa se monta como lectura/escritura y da lugar al
contenedor. Las capas usan el patrón “copy on write”

Ing. David Guevara A, Mg (UTA) Contenedores 18 / 27


Docker

Comandos con imágenes


docker images
d o c k e r r u n − i t −−name t e s t 0 1 u b u n t u / b i n / b a s h # modo i n t e r a c t i v o y e j e c u t a en
terminal
d o c k e r r u n −t − i −−name t e s t 0 2 c e n t o s : c e n t o s 6 / b i n / b a s h
d o c k e r p u l l ubuntu : 1 4 . 0 4
d o c k e r p u l l dga / c e n t o s o p e n : c e n t o s 7
docker search centos
docker ps
d o c k e r a t t a c h t e s t 0 1 #c o n e c t a r a un c o n t e n e d o r
docker exec −i t t e s t 0 1 / b i n / sh

Ing. David Guevara A, Mg (UTA) Contenedores 19 / 27


Docker

Ing. David Guevara A, Mg (UTA) Contenedores 20 / 27


Docker

Mapeo de puertos
r o o t @ d o c k e r : ~# d o c k e r r u n −d −p 8000:80 −−name apache_2 a p a c h e / u b u n t u : v1 /
u s r / s b i n / a p a c h e 2 c t l −D FOREGROUND

Ing. David Guevara A, Mg (UTA) Contenedores 21 / 27


LXC (Linux Containers)

LXC es una tecnología de virtualización ligera a nivel de sistema operativo.


LXC no provee una máquina virtual, sino un entorno virtual que tiene su
propio espacio de procesos, memoria y de redes. Es un software libre bajo
licencia GPL. Su objetivo es crear un entorno lo más cerca posible a una
instalación estándar de Linux pero sin la necesidad de un núcleo separado.
Instalación, requisitos
r o o t @ l x c : ~# yum −y u p d a t e
r o o t @ l x c : ~# yum −y i n s t a l l e p e l −r e l e a s e

LXC usa la red en modo bridge para tener acceso a la red externa, por lo
que es recomendable antes de arrancar LXC crear un network bridge cuyo
nombre sea virbr0

Ing. David Guevara A, Mg (UTA) Contenedores 22 / 27


LXC (Linux Containers)

Una vez completados los prerequisitos se puede instalar LXC.


r o o t @ l x c : ~# yum −y i n s t a l l l x c l x c −t e m p l a t e s l i b c a p −d e v e l libcgroup b u s y b o x wget
b r i d g e − u t i l s l x c −e x t r a

Una vez instalado se puede comprobar la instalación con el siguiente


comando:
lxc-checkconfig

Ing. David Guevara A, Mg (UTA) Contenedores 23 / 27


LXC (Linux Containers)

Para crear contenedores en LXC se debe usar los templates que ya dispone
LXC y se listan con el siguiente comando.
r o o t @ l x c : ~# l s / u s r / s h a r e / l x c / t e m p l a t e s

Para crear un contenedor se usa el siguiente comando


r o o t @ l x c : ~# l x c −c r e a t e −n m i c e n t o s −t centos

Es importante mirar los siguientes mensajes:


The temporary root password is stored in:
’/var/lib/lxc/centos_lxc/tmp_root_pass’
chroot /var/lib/lxc/centos_lxc/rootfs passwd

Ing. David Guevara A, Mg (UTA) Contenedores 24 / 27


LXC (Linux Containers)

Para arrancar un contenedor se puede usar el siguiente comando


r o o t @ l x c : ~# l x c −s t a r t −n m i c e n t o s −d

Para acceder a la consola del contenedor


r o o t @ l x c : ~# l x c −c o n s o l e −n m i c e n t o s −t 0

Se ingresa el user y password. Para salir de la consola se debe presionar


"Ctrl +a" seguido por "q"

Ing. David Guevara A, Mg (UTA) Contenedores 25 / 27


LXC (Linux Containers)

Comandos útiles para trabajar con LXC


r o o t @ l x c : ~# l x c −l s
r o o t @ l x c : ~# l x c −l s −−a c t i v e
r o o t @ l x c : ~# l x c −i n f o −n m i c e n t o s
r o o t @ l x c : ~# l x c −s t o p −n m i c e n t o s

Para clonar contenedores


r o o t @ l x c : ~# l x c −c l o n e micentos micentos_clone

Se ingresa el user y password. Para salir de la consola se debe presionar


"Ctrl +a" seguido por "q"

Ing. David Guevara A, Mg (UTA) Contenedores 26 / 27


Autor

Ing. David Guevara A, Mg


dguevara@uta.edu.ec
david@ddlinux.com
http://david.ddlinux.com
Presentación desarrollada en LYX con el módulo beamer

Ing. David Guevara A, Mg (UTA) Contenedores 27 / 27

También podría gustarte