SlideShare una empresa de Scribd logo
INTRODUCCIÓNADOCKER
QUIÉNESSOMOS
Trabajamos en Cosmomedia
Desarrollamos con Symfony desde 2010
Twitter: @webcome y @canonale
CONLACOLABORACIÓNDE
¿Alguien conoce este botón?
LOQUEELJEFEQUIERA,ES:
La adaptación y la rápidez
SISTEMAS ÁGILES
DOCKERTEAYUDA
Alguien tiene un script para instalar automaticamente
Wordpress
Habéis tenido que llevar una aplicación rápidamente a
otro servidor
Habéis necesitado escalar un servicio.
COMOENCONTRÉDOCKER
COMOENCONTRÉDOCKER
Equipos de desarrollo con la misma configuración.
Tener distintas versiones de una app en el mismo servidor
Desplegar rápidamente y en cualquier servidor cualquier
stack
ANTESPROBAMOS
Había probado con Virtualbox. Demasiados recursos
Probamos con Vagrant. Demasiado manual
Usamos Vagrant + Puppet. Complejo y tedioso.
El stack se había hecho muy complejo
YENCONTRAMOSDOCKER
QUEESDOCKER
Docker containers wrap up a piece of
software in a complete filesystem that
contains everything it needs to run: code,
runtime, system tools, system libraries
#*@!#
Docker website
DOCKERVSVM
PEROQUEESDOCKER
Usa la tecnología LXC como sistema de virtuacización
Se apoya en cgroups
También usa AUFS, para el sistema de ficheros
Y Chroot
REQUISITOSDOCKER
Funciona Nativamente en Linux
Se requiere de un kernel 3.10 o superior
En Mac y Windows usa una máquina virtual.
INSTALARDOCKER
Ejecutar la orden:
>_ curl ­sSL https://get.docker.com/ | sh 
  
Si no usas el usuario root:
>_ sudo groupadd docker 
>_ sudo gpasswd ­a ${USER} docker 
>_ sudo service docker restart 
  
PORQUEUTILIZARDOCKER
Nuestro stack funcionará en cualquier entorno, el
despliegue es instantáneo y nos permite escalar servicios
PORQUEUTILIZARDOCKER
Dispondremos de una autentica estructura orientada a los
servicios.
TRABAJOCONCONTENEDORES
DOCKER:IMAGES
Listar las imágenes instaladas
>_ docker images 
REPOSITORY  TAG     IMAGE ID      CREATED      VIRTUAL SIZE 
python­bce  latest  e6c6b9f243b3  9 days ago   692.5 MB 
node­gulp   latest  af8ac3d2b121  10 days ago  661.7 MB 
puppet      v1      6fac737d4ff8  13 days ago  337.2 MB 
  
DOCKER:PULL
Pull como en git sirve para bajar imagenes:
>_ docker pull httpd 
  
Esto guarda localmente todas las capas de la imagen de
apache.
DOCKER:PULL
A veces las imágenes tienen diferentes versiones de un
mismo servicio.
Podemos bajar solamente la versión que no interese de una
imagen, descartando capas que no nos valen
>_ docker pull httpd:2.2 
  
DOCKER:RUN
El comando runejecuta la imagen escogida. Toda imagen
necesita ejecutar un comando y cuando ese comando
termine la máquina se apaga.
>_ docker run ­ti busybox echo "hola mundo" 
hola mundo 
  
DOCKER:RUN
Podemos mantener la maquina en segundo plano, siempre
y cuando ejecuto un comando que no termina:
>_ docker run ­d busybox tail ­f /proc/swaps 
97819261ac2 
  
Generará una máquina con un nombre aleatorio y el id que
se muestra
DOCKER:COMMIT
Docker no guarda persistencia en los cambios. Si queremos
modificar una imagen y guardar esos cambios tenemos que
hacer un commit, con estos pasos
1. Creamos la imagen
2. Cogemos el ID de la ultima máquina creada
>_ docker run ­ti busybox touch myfile 
  
>_ docker ps ­lq 
b8679bcd41dc
3. Hacemos el commit
4. Verificamos la disposición
>_ docker commit b8679bcd41dc busybox:2
>_ docker images 
  REPOSITORY  TAG     IMAGE ID      CREATED         VIRTUAL SIZE
  busybox:2   latest  4e4d7142d4cf  20 seconds ago  1.109 MB
ORDENESDECONTROLDEDOCKER
Maquinas en funcionamiento
>_ docker ps 
CONTAINER ID   IMAGE               COMMAND                  CREATED 
6ab5c7de440a   node­gulp:latest    "/entrypoint.sh gulp "   1 week 
STATUS        PORTS     NAMES 
Up 4 days     3000/tcp  frontend_dockregistry_1
Parar una máquina
>_ docker stop id­maquina/nombre­maquina
Arrancar una máquina parada
>_ docker start id­maquina/nombre­maquina
Eliminar una máquina. (Parada)
>_ docker rm id­maquina/nombre­maquina
DOCKERPUSH
Guardar y distribuir nuestras imagenes ya creadas.
Las imagenes en docker.com son siempre públicas
IMAGENESPRIVADAS
Hay servicios que dan la posibilidad de tener imágenes
privadas
DonDocker.com
hub.docker.com
quay.io
DOCKERPUSH
El proceso tiene 4 pasos:
1. Loguearnos en el servicio (DonDocker)
2. Creamos el contenedor.
3. Hacemos un commit de la imagen
4. Hacemos el push de la imagen
Tutorial de DonDocker
NUESTROPRIMERDOCKER.SERVIDOR
APACHE
Vamos a buscar la imagen a . (Se
recomienda usar las imágenes oficiales) Bajamos la imagen
httpd
hub.docker.com
>_ docker pull httpd:2.2 
  
Tras tener la imagen, vamos a desplegar la máquina con el
código que tenemos en nuestra carpeta ~/app/así:
>_ docker run ­d ­­name apache ­p 8888:80  
­v ~/app:/usr/local/apache2/htdocs/ httpd:2.2 
  
Ahora podemos abrir la aplicación:
>_ xdg­open http://localhost:8888/ 
  
NUESTROPRIMERDOCKER.SERVIDOR
APACHE
1. Hemos creado una máquina en background con -d
2. Hemos mapeado el puerto 8888 con el 80 con -p
3. Compartimos la carpeta appcon -v
DOCKERFILE
DOCKERFILE
Es un fichero con instrucciones para crear máquinas
partiendo desde una imagen. Podemos modificar una
existente
DOCKERFILE:FROM,ENV,RUN
FROM es la orden que indica la base sobre la que partimos
FROM debian:jessie 
  
ENV se usa para generar variables de entorno que luego
estarán disponibles
ENV PHP_VERSION 5.6.2 
  ENV PATH $PATH:$HTTPD_PREFIX/bin 
  
RUN es cualquier orden que ejecutaríamos en la consola.
Para que en la máquina conste menos pasos se suelen
agrupar todas las ordenes
RUN apt­get update 
  #UNA SOLA ORDEN 
  RUN apt­get update  
    && apt­get install ­y  
      libapr1  
      libaprutil1  
      libapr1­dev  
      libaprutil1­dev  
      libpcre++0  
      libssl1.0.0  
    && rm ­r /var/lib/apt/lists/* 
  
DOCKERFILE:WORKDIR,ADD,COPY,
EXPOSE,VOLUME
COPY sirve para añadir scripts o ficheros a la imagen
durante la creación
ADD es similar a copy pero puede interpretar cualquier uri
WORKDIR es la ruta base sobre la que se ejecutará todo
COPY httpd­foreground /usr/local/bin/ 
      
ADD http://gits.github.com/saujhf22 /local/ 
      
WORKDIR /local/ 
      
EXPOSE sirve para dar acceso a un puerto o rango de
puertos
EXPOSE 80 
      
VOLUME se usa para dar persistencia a los datos, suele
darse a carpetas que contienen la aplicación a ejecutar o los
datos da la base de datos.
VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"] 
      
DOCKERFILE:CMD,ENTRYPOINT
CMD este comando se ejecuta cuando se arranca la
máquina. Suele usarse para ejecutar servicios que
funcionan constantemente como apache
ENTRYPOINT se ejecuta cada vez que se ejecuta la
máquina. Suele usarse para preparar la máquina o
descargar librerias
CMD ["httpd­foreground"] 
  
ENTRYPOINT bower install ­g 
  
CONSTRUIRLAMÁQUINA:
>_ docker build ­t my­app .
Verificamos que la máquina funciona
>_ docker run ­­name alpache ­d ­p 80:80 my­app 
59a4a65442c92c3856 #id­maquina 
>_ docker ps
COMPARTIRCARPETAS
Resulta de mucha utilidad para cuando estamos
desarrollando
Se pueden montar varias carpetas incluso ficheros
individuales
>_ docker run ­v $PWD/app:/var/www/html httpd:2 
>_ docker run ­­volume $PWD/app:/var/www/html httpd:2
Es necesario usar rutas absolutas, por eso se usa $PWD
MONTARVOLUMESDEOTRODOCKER
>_ docker run ­­volumes­from mysql httpd:2
No se necesitan que otras máquinas estén ejecutandose
Montará aquellas carpetas definidas como volumenes, bien
en el Dockerfile al crearse o al errancar la máquina
STACKWORDPRESS
IP: 172.17.1.9
Puerto: 3306/tcp
Name: Mysql
Volume: /var/lib/mysql
MySQL
IP: 172.17.1.10
Puerto: 80/tcp
Name: Wordpress
Volume: /var/www/html
Wordpress
link
PÁSOPARACREARELSTACK
1. Definir variables de la base de datos.
2. Definir variables de la aplicación
3. Arrancar la máquina con MySQL
4. Arrancar Wordpress y enlazar a la base de datos
VARIABLESDEMYSQL
Nombre de la base de datos
El usuario que se va a conectar
El password del usuario
Hay otras variables que se pueden definir
VARIABLESDEWORDPRESS
Definimos lo que tiene que ver con la base de datos.
Usuario
Contraseña
Nombre de la base de datos
Prefijo de la base de datos
Opciones de autenticación
ARRANCAMOSMYSQL
>_ docker run ­­name mysql ­­env­file .vars ­d mysql 
   
ARRANCAMOSWORDPRESS
>_ docker run ­­name wordpress ­­link mysql:mysql  
   ­­env­file .vars  
   ­p 88:80 ­d wordpress
FICHERO.VARS
#MYSQL 
MYSQL_ROOT_PASSWORD=123456 
MYSQL_DATABASE=database 
MYSQL_USER=usuario 
MYSQL_PASSWORD=password 
#WORDPRESS 
WORDPRESS_DB_HOST=mysql 
WORDPRESS_DB_USER=usuario 
WORDPRESS_DB_PASSWORD=password 
WORDPRESS_DB_NAME=database 
WORDPRESS_TABLE_PREFIX=clk_
INSPECT
Herramienta que nos proporciona información acerca de las
máquinas en funcionamiento. Ejemplo:
    >_ docker inspect my_machine 
  
Devuelve un JSON con datos de la máquina: IP, imagen,
volumenes, puertos...
INSPECT
[{ 
  "Config": { 
   "Cmd": ["mysqld"], 
   "Entrypoint": ["/entrypoint.sh"], 
   "Env": [], 
   "ExposedPorts": {}, 
   "Image": "mysql:latest", 
   "Volumes": {
    "/var/lib/mysql": {} 
   }, 
   "WorkingDir": "" 
  }, 
  "Id": "5d37f187b2ce57....", 
  "Image": "9eefddb060bc647...", 
  "Name": "/piwik_db_1", 
  "NetworkSettings": { 
   "Bridge": "docker0", 
INSPECT:FILTROS
Como inspect devuelve muchos datos, la opción -f nos
permite filtrar como lo harías en un JSON. Para saber la IPv4
de una máquina:
    >_ docker inspect ­f '{{.NetworkSettings.IPAddress}}' my_machine 
  
El resultado de inspect -f no es json para
ello tenemos que poner el modificador
delante del filtro: -f '{{json .Config.Env}}'
HERRAMIENTASPARADOCKER
DOCKER-COMPOSE
Se usa para controlar un stack entero
Toda la configuración en un solo fichero docker-
compose.yml
Facilita el escalado de las máquinas
DOCKER-COMPOSEDEWORDPRESS
wordpress:
  image: wordpress 
  links: 
    ­ mysql:mysql 
  env_file: 
    ­ ./.vars 
  ports: 
    ­ "88:80" 
mysql: 
  image: mysql 
  env_file: 
    ­ ./.vars
ORDENESBÁSICASDEDOCKER-
COMPOSE
Inicializar el stack:
>_ docker­compose up ­d
Parar el stack:
>_ docker­compose stop
Volver a arrancar
>_ docker­compose start
DOCKER-MACHINE
Gestor de maquinas virtuales que nos abstrae del tipo de
máquina y que instala lo imprescindible para usar docker.
Para sistemas operativos no linux y cuando no quieres
guarrear tu máquina.
ORDENESBÁSICAS
Ver las máquinas creadas.
>_ docker­machine ls
Arrancar una máquina.
>_ docker­machine start [nombre­maquina]
Parar el stack:
>_ docker­compose stop [nombre­maquina]
CREARUNAMÁQUINA
docker-machine permite crear una máquina virtual local o
en diferentes plataformas
>_ docker­machine create  
   ­­generic­ip­address 192.168.99.111  
   ­­virtualbox­boot2docker­url  http://192.168.99.100:4444/boot2docker.iso 
   ­­virtualbox­cpu­count "1"  
   ­­virtualbox­disk­size "20000"  
   ­­virtualbox­memory "1024"  
   ­d  virtualbox  
   mi­maquina
Conectar con la máquina sin usar ssh
>_ eval $(docker­machine env mi­maquina)
FIN
¿PREGUNTAS?
j.mp/ENCUESTADOCKER

Más contenido relacionado

PDF
Dockerイメージの理解とコンテナのライフサイクル
PDF
Containers: The What, Why, and How
PPTX
Docker: From Zero to Hero
PDF
Dockerを支える技術
PDF
The ultimate guide to software updates on embedded linux devices
PPTX
Containerization and Docker
PDF
Docker composeで開発環境をメンバに配布せよ
PDF
DockerとDocker Hubの操作と概念
Dockerイメージの理解とコンテナのライフサイクル
Containers: The What, Why, and How
Docker: From Zero to Hero
Dockerを支える技術
The ultimate guide to software updates on embedded linux devices
Containerization and Docker
Docker composeで開発環境をメンバに配布せよ
DockerとDocker Hubの操作と概念

La actualidad más candente (20)

PDF
Hyper-VでLinuxを稼働させることの利点と制限
PDF
Docker
PDF
De desarrollo a producción usando docker
PPTX
Kubernetes introduction
PDF
不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)
PDF
Docker Compose 徹底解説
PDF
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
PDF
초심자를 위한 도커 소개 및 입문
PDF
Go MobileでAndroidアプリ開発
PDF
Docker Introduction
PDF
DockerとPodmanの比較
PPTX
Software libre y comercial
PPTX
Getting started with Docker
PDF
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
PDF
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
仮想化環境におけるパケットフォワーディング
PPTX
Docker introduction & benefits
PPTX
Linux
Hyper-VでLinuxを稼働させることの利点と制限
Docker
De desarrollo a producción usando docker
Kubernetes introduction
不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)
Docker Compose 徹底解説
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
초심자를 위한 도커 소개 및 입문
Go MobileでAndroidアプリ開発
Docker Introduction
DockerとPodmanの比較
Software libre y comercial
Getting started with Docker
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Dockerfile を書くためのベストプラクティス解説編
仮想化環境におけるパケットフォワーディング
Docker introduction & benefits
Linux
Publicidad

Similar a Introduccion A Docker (20)

PDF
Taller docker _es-cl
PPTX
Docker como recurso de aula para docentes
PDF
docker.pdf
PDF
Linux y Docker, Practicas de Sistemas Operativos
PPTX
Jug málaga docker 101 - final
PDF
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
PDF
Dockeriza tu entorno de desarrollo
PDF
Docker en el entorno de desarrollo
PDF
BEEVA | Introducción a Docker
PPTX
FROM lost to the Docker 2020
PDF
Curso gratuito de Docker
PDF
TECNIRIS47-1b.pdf
PDF
FROM lost to the docker
PDF
Vagrant y Docker - Guía práctica de uso
PDF
Dockers y wp
PDF
Docker 101 Workshop - WomenWhoCode Buenos Aires
PDF
Docker introducción - Flisol 2015 Huancayo
PDF
Docker desde cero
PDF
nerdear.la 2016 - Docker workshop
PDF
Workshop docker: Iniciando en el Mundo de los Contenedores
Taller docker _es-cl
Docker como recurso de aula para docentes
docker.pdf
Linux y Docker, Practicas de Sistemas Operativos
Jug málaga docker 101 - final
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Dockeriza tu entorno de desarrollo
Docker en el entorno de desarrollo
BEEVA | Introducción a Docker
FROM lost to the Docker 2020
Curso gratuito de Docker
TECNIRIS47-1b.pdf
FROM lost to the docker
Vagrant y Docker - Guía práctica de uso
Dockers y wp
Docker 101 Workshop - WomenWhoCode Buenos Aires
Docker introducción - Flisol 2015 Huancayo
Docker desde cero
nerdear.la 2016 - Docker workshop
Workshop docker: Iniciando en el Mundo de los Contenedores
Publicidad

Último (20)

PPT
Que son las redes de computadores y sus partes
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
taller de informática - LEY DE OHM
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
CyberOps Associate - Cisco Networking Academy
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
Calidad desde el Docente y la mejora continua .pdf
Que son las redes de computadores y sus partes
Estrategia de apoyo tecnología grado 9-3
taller de informática - LEY DE OHM
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
CyberOps Associate - Cisco Networking Academy
Zarate Quispe Alex aldayir aplicaciones de internet .docx
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Influencia-del-uso-de-redes-sociales.pdf
Power Point Nicolás Carrasco (disertación Roblox).pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Presentación PASANTIAS AuditorioOO..pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
historia_web de la creacion de un navegador_presentacion.pptx
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Propuesta BKP servidores con Acronis1.pptx
El-Gobierno-Electrónico-En-El-Estado-Bolivia
Estrategia de apoyo tecnología miguel angel solis
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Sesion 1 de microsoft power point - Clase 1
Calidad desde el Docente y la mejora continua .pdf

Introduccion A Docker