Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introducción a Docker
Search
Carlos Moro
July 23, 2015
Technology
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introducción a Docker
My intro to docker talk at Euskal Encounter 23 (spanish).
Carlos Moro
July 23, 2015
More Decks by Carlos Moro
See All by Carlos Moro
Introducción a BD NoSQL
dordoka
0
39
Other Decks in Technology
See All in Technology
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
1つのリクエストを追って理解する - llm-dのP/D分離
akhino
1
160
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
180
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
940
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
870
hackers_champloo_2026_tidb
makocchi
0
160
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
770
re:Invent初参加で変わったこと、2回目にやってみたいこと(JAWS-UG彩の国埼玉 #12)
mhrtech
2
230
会社説明資料
persolserverworks
0
9.8k
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
920
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
250
エンタメ企業のM&Aを支えるデータ基盤 ― 統合から店舗のリアルタイム分析まで / Data Engineering Summit 2026
genda
0
180
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1.1k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
Designing Experiences People Love
moore
143
24k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Deep Space Network (abreviated)
tonyrice
0
370
Optimising Largest Contentful Paint
csswizardry
37
4k
GraphQLとの向き合い方2022年版
quramy
50
15k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
Producing Creativity
orderedlist
PRO
348
41k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Transcript
Docker Introducción Carlos Moro García @dordokamaisu Euskal Encounter 23
CMG ¡Bienvenidos!
CMG Introducción El problema y la solución Arquitectura Instalación
CMG Nuestro primer container Comandos Docker Hub Dockerfiles
CMG Introducción
CMG Introducción Veremos qué es Docker y qué problemas soluciona
Aprenderemos de forma práctica a dar nuestros primeros pasos con Docker
CMG Introducción Las prácticas se basarán en Ubuntu 15.04 ¡Preguntad
cuando queráis!
CMG El Problema
CMG El Problema Software con múltiples dependencias Debe funcionar en
múltiples lugares Debe poder migrarse de forma sencilla entre entornos
CMG El Problema Y además…
CMG El Problema ¡Funcionar!
CMG El Problema Éste el panorama con el que nos
encontramos a día de hoy…
CMG
CMG El Problema Software heterogéneo Múltiples tecnologías Stacks cada vez
más complejos El mítico en mi PC funciona
CMG El Problema Matrix from Hell
CMG
CMG El Problema Echando la vista atrás, esta es una
problemática análoga a otras que ya han sido solucionadas en el pasado Por ejemplo, el transporte de mercancías…
CMG El Problema Érase una vez, allá por 1960…
CMG
CMG El Problema Matrix from Hell del transporte
CMG
CMG El Problema ¿Os suena?
CMG La Solución
CMG La Solución A las mentes pensantes de aquella época
se les ocurrió la idea del contenedor Sistema standard para resolver el problema
CMG
CMG La Solución De la misma forma, en nuestro mundillo,
el contenedor da solución al Matrix from Hell
CMG
CMG La Solución Una tecnología que posibilita encapsular software de
forma autocontenida, portable y autosuficiente…
CMG La Solución …que puede ser manipulada con operaciones standard
y funcionar de forma consistente en cualquier entorno
CMG La Solución ¡No moar Matrix from Hell!
CMG
CMG La Solución
CMG La Solución Desarrolladores Build once, run anywhere* Entorno portable
para tu app No más problemas con dependencias
CMG La Solución Desarrolladores Múltiples versiones de tu misma app
en diferentes containers Automatiza tests, integración, empaquetado Adiós problemas de compatibilidad
CMG La Solución Sistemas Configure once, run anything Elimina inconsistencias
entre DEV, TEST, PRO Separación de responsabilidades
CMG La Solución Sistemas Aumenta la velocidad y fiabilidad de
los despliegues Reducción de costes
CMG La Solución
CMG La Solución Para los que miran sospechantes…
CMG ¡Los contenedores no son máquinas virtuales! La Solución
CMG
CMG
CMG La Solución
CMG Arquitectura
CMG Arquitectura Docker se basa en varias tecnologías ya existentes
La clave está en que ha estandarizado el uso de dichas tecnologías
CMG Arquitectura Tecnologías cgroups namespaces Union FS & CoW libcontainer
CMG Arquitectura Tecnologías cgroups: control namespaces: aislamiento Union FS &
CoW: filesystem libcontainer: formato
CMG
CMG Arquitectura Mejor vamos al grano, que se nos va
el tiempo ;)
CMG
CMG Arquitectura Componentes Docker Daemon Docker Client Docker Registry
CMG Arquitectura Docker Daemon Corre en la máquina host Es
quien realmente interactúa con el kernel
CMG Arquitectura Docker Client Corre en la máquina host o
en cualquier otra máquina con conectividad al Daemon Interactúa con el Daemon mediante comandos
CMG Arquitectura Dentro de Docker Images Registries Containers
CMG Arquitectura Docker Images Plantilla read-only Se utilizaran para crear
containers Ej: imagen Debian o CentOS
CMG Arquitectura Docker Registries Almacén de imágenes Públicos o Privados
Docker Hub
CMG Arquitectura Docker Containers Concepto similar a un directorio Contiene
todo lo que necesita una aplicación para funcionar
CMG Arquitectura Docker Containers Cada container se crea a partir
de una image base Se definen mediante Dockerfiles
CMG Arquitectura En resumen Images: build Registries: distribution Containers: run
CMG Arquitectura Suficiente txapa, vamos al tema…
CMG Instalación
CMG Instalación Ubuntu 15.04 sudo apt-get update sudo apt-get install
docker.io sudo service docker start
CMG Instalación Comprobamos sudo docker version
CMG Instalación Método fácil y rápido La pega es que
no obtendremos la última versión estable de docker Para ello, tendríamos que añadir el repositorio apt de docker e instalar el paquete docker-lxc
CMG Instalación Docker ha automatizado este proceso mediante un script
wget -qO- https://get.docker.com/ | sh
CMG Instalación Última versión sudo apt-get remove —purge docker.io wget
-qO- https://get.docker.com/ | sh
CMG Instalación Ahora sí…
CMG Instalación Opcional: sudoless sudo usermod -aG docker <nombredeuser>
CMG Instalación https://docs.docker.com/ installation/ubuntulinux/ https://docs.docker.com/ installation/debian/
CMG Nuestro primer container
CMG Nuestro primer container ¡Vamos a lanzar nuestro primer container!
docker run ubuntu:14.04 /bin/echo ‘Hello World!’
CMG
CMG
CMG
CMG Nuestro primer container docker run ubuntu:14.04 /bin/echo ‘Hello World!’
CMG Nuestro primer container Hemos lanzado el comando run Le
hemos indicado la imagen base (ubuntu:14.04) Le hemos indicado que aplicación lanzar dentro del container cuando éste arranque (/bin/echo)
CMG Nuestro primer container Para conseguirlo, docker… hace pull de
la image crea un nuevo container crea un filesystem y monta una capa rw sobre el mismo
CMG Nuestro primer container crea un interface de red para
hablar con localhost le asigna una dirección IP ejecuta el proceso que se ha especificado captura la salida de ese proceso
CMG Comandos
CMG Comandos docker version Muestra las versiones actuales de los
diferentes componentes de docker
CMG Comandos docker images Muestra un listado con las images
y sus versiones que tenemos descargadas localmente.
CMG Comandos docker ps Muestra un listado con los contenedores
que estén corriendo actualmente.
CMG Comandos docker pull <image>:<tag> Descarga del registry actual la
imagen image en su versión tag.
CMG Comandos docker run <image>:<tag> <command> Lanza un nuevo contenedor
basado en la imagen image, versión tag y ejecuta el comando indicado.
CMG Comandos docker run -d <image>:<tag> <command> Detach, ejecución en
background. Además, muestra el ID del Container.
CMG Comandos docker ps -a Muestra un listado de todos
los contenedores que se han lanzado.
CMG Comandos docker run -it <image>:<tag> <command> Interactive & tty,
ejecución en foreground interactiva.
CMG Comandos docker logs <containerid> Muestra la salida del container
indicado.
CMG Comandos Ejemplo docker pull debian:latest docker images docker run
-it debian:latest /bin/ bash
CMG Comandos Ejemplo root@c98aaa88d3e8:/# cat /etc/debian_version root@c98aaa88d3e8:/# exit docker ps
docker ps -a
CMG Comandos Ejemplo docker logs c98aaa88d3e8
CMG Docker Hub
CMG Docker Hub Hub es el registry público de docker
Podemos registrarnos y hacer uso del mismo Podemos subir n imágenes públicas gratuitamente
CMG Docker Hub Podemos subir sólo una imagen privada de
forma gratuita Se ofrecen planes de pago para el uso privado (ie: en ámbito de empresa)
CMG Docker Hub Docker Registry es un proyecto open source
https://github.com/docker/ distribution No así la interfaz (el Hub)
CMG Docker Hub https://registry.hub.docker.com
CMG
CMG Docker Hub Demo Docker Hub
CMG Dockerfile
CMG Dockerfile Todo esto está muy bien pero, ¿cómo creo
mis propias imágenes?
CMG Dockerfile Mediante el Dockerfile Es un fichero en el
que se indica una secuencia de comandos para que docker construya nuestra imagen
CMG Dockerfile Una vez creado, lanzamos el comando docker build
que parseará el fichero y generará nuestra imagen
CMG Dockerfile Veremos su estructura y los comandos soportados de
forma práctica
CMG Dockerfile Vamos a crear un container que contenga un
servidor web (apache2)
CMG Creamos un directorio $ mkdir docker-apache $ cd docker-apache
$ vi Dockerfile Creamos el Dockerfile
CMG FROM ubuntu:12.04 MAINTAINER Dordoka
[email protected]
RUN apt-get update &&
apt-get install -y apache2 ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 EXPOSE 80 VOLUME /var/www/ CMD [“apache2”,“-D”,“FOREGROUND”]
CMG Generamos la image $ docker build -t euskal23/apache2 .
CMG Comprobamos que no ha aparecido ningún error $ docker
images Comprobamos nuestra nueva imagen
CMG Dockerfile Ahora vamos a lanzar un container que use
nuestra imagen Aprovechamos y vemos un par de opciones muy comunes de docker run
CMG Lanzamos nuestra imagen $ docker run euskal23/apache2 Vemos que
apache se está ejecutando, pero no podemos conectarnos
CMG Lanzamos nuestra imagen, esta vez exponiendo el puerto tcp80
$ docker run -p80:80 euskal23/apache2 Comprobamos
CMG
CMG Dockerfile Hemos usado el flag -d el cual ejecuta
el contenedor en background También hemos usado el flag -p, el cual expone un puerto del contenedor y lo mapea a un puerto del host docker
CMG Dockerfile Como lo hemos lanzado en background, nuestro container
se mantiene en marcha Para detenerlo, usamos el comando stop
CMG Dockerfile $ docker ps $ docker stop 388fd0eb0286
CMG Dockerfile Otro flag muy común es -v Significa volume
y mapea un directorio del host docker dentro de otro directorio del container -v <hostdir>:<containerdir>
CMG Dockerfile Prueba a crear un directorio Crea un fichero
index.html en el mismo con algún contenido Prueba a ejecutar tu container, haciendo uso de -d, -p y -v
CMG Lanzamos nuestra imagen $ docker run -d -p 80:80
-v ~/www:/var/www euskal23/apache2
CMG Dockerfile Hay mucho más… aplicaciones con múltiples containers (links,
docker- compose) orquestación (docker swarm, kubernetes, apache mesos)
CMG Pero esa es otra historia y debe ser contada
en otra ocasión…
CMG ¡Gracias!
CMG> Carlos Moro García LinkedIn @dordokamaisu
[email protected]