SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
Creating Effective
Docker Images
Víctor S. Recio
DevOps Engineer
vrecio@opsecsecurity.com
Fundador y Organizador
● Docker Santo Domingo
● Linux Dominicana
● Golang Dominicana
● OpenSaturday.org
@vsrecio
#DockerSantoDomingo #CodeCampSDQ @docker
Agenda de trabajo
1. Qué es Docker y los contenedores?
2. Qué es una imagen de Docker?
3. Docker en los procesos DevOps
4. Dockerfile
5. Docker Registry
6. Manejo efectivo de las imágenes
7. Cómo funcionan los layers?
8. Imagenes Seguras
Qué es Docker y los
Contenedores?
Los días Pasados!
Hypervisor
Los días Pasados!
Qué es una imagen de
Docker?
Las imágenes de Docker están creadas en capas y están
representadas como un único objeto. En la base de las imágenes
de Docker existe un Sistema Operativo Mínimo corriendo todas las
dependencias necesarias para correr solamente la aplicación
para la que fue creada la imagen.
1.7GB 4MB / 84 MB
Mientras más Ligero y Rápido Mejor!
Docker en los Procesos
DevOps
Dockerfile
# Use an official Python runtime as a parent image
FROM python:2.7
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["python", "app.py"]
# Create a Dockerfile for an ASP.NET Core application
FROM microsoft/aspnetcore-build:2.0
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
○ malala in ~
→ docker build -t vsrecio/CodeCampSDQ Dockerfile
○ malala in ~
→ docker build -t <repo/images>:<tag> .
● Tener un estándar para los tags y un control de registro
● Tener un nombre base para las imágenes
Que NO hacer con tu
Dockerfile!
Nunca hacer lo siguiente:
● Apt-get update o install
● Node install o Algo parecido
● Yum install o update
Nunca nombrarlos de la
siguiente forma:
● Dockerfile.dev
● Dockerfile.staging
● Dockerfile.prod
Buenas practicas!
● Usar .dockerignore
● Usar el multi-stage build
● Usar un usuario diferente a root
● Documentar tus Dockerfiles
● Nombra tus Build Steps (As klok)
● Usar imagenes multiplataformas cuando sea necesario
FROM golang:1.7.3
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html
COPY app.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=0 /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]
Multi-stage builds
1
2
Dockerfile
Docker Registry
Los registros Docker sirven para almacenar las diversas imágenes de Docker que
utilicemos en nuestro sistema. De esta forma podremos subir imágenes nuevas a
los registros, o descargarlas cuando las necesitemos en alguna máquina Docker.
Docker hub es el registro por defecto de Docker, pero podemos utilizar otro de
nuestra preferencia.
https://hub.docker.com/_/nginx
https://hub.docker.com/_/debian
https://hub.docker.com/_/redis
https://hub.docker.com/_/mongo
Manipulación de
las imágenes!
Manipulación de las imágenes!
○ malala in ~
○ → docker docker images pull <images>:<tag>
Localmente las imagenes estan aqui:
● Linux: /var/lib/docker/
● Windows: C:ProgramDatadockerwindowsfilter
○ malala in ~
○ → docker docker images pull -a <images>:<tag>
Descarga todas los tag de la imagen
○ malala in ~
○ → docker images ls
REPOSITORY TAG IMAGE ID CREATED SIZE
○ malala in ~
○ → docker rm <image-name>
○ malala in ~
○ → docker images ls --filter dangling=true
REPOSITORY TAG IMAGE ID CREATED SIZE
Las imágenes de Docker consisten en múltiples capas. Las Dangling images son capas que no tienen
relación con ninguna imagen etiquetada. Ya no sirven un propósito y consumen espacio en disco.
Podemos borrar todas las imágenes en docker con el comando docker system prune
Docker actualmente soporta los siguientes tipos de filtrado:
Dangling: Acepta (true or false) y retorna solamente dangling images.
Before: Requiere de una ID de imagen o nombre de imagen como argumento y retorna
todas las imágenes creadas antes de.
Since: Igual que la anterior pero después de.
Label: Filtra basado en labels, recuerda que docker image ls no despliega labels en la
salida.
○ malala in ~
○ → docker images ls --format “{{.Size}}”
REPOSITORY TAG IMAGE ID CREATED SIZE
Docker usa plantillas Go que puede utilizar para manipular el formato de salida de
ciertos comandos y controladores de registro. Docker proporciona un conjunto de
funciones básicas para manipular elementos de plantilla.
○ malala in ~
○ → docker images ls --format “{{.Repository}}: {{.Tag}}: {{.Size}}”
REPOSITORY TAG IMAGE ID CREATED SIZE
○ malala in ~
○ → docker search debian --filter “is-official=true”
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
En la línea de comandos de Docker Hub también podemos usar el poder del
filtrado de las imágenes que buscamos.
○ malala in ~
○ → docker search debian --filter “is-automated=true”
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
Cómo Funcionan
los Layers?
Los contenedores Docker son bloques de construcción para aplicaciones. Cada
contenedor es una imagen con una capa readable/writeable sobre un grupo de capas de
solo lectura.
Estas capas (también llamadas imágenes intermedias) se generan cuando los comandos
en el Dockerfile se ejecutan durante la construcción de la imagen del Docker.
○ malala in ~
○ → docker pull mongo
Using default tag: latest
latest: Pulling from library/mongo
34667c7e4631: Pull complete
d18d76a881a4: Pull complete
119c7358fbfc: Pull complete
2aaf13f3eff0: Pull complete
f7833eaffdda: Pull complete
8287cb5b9daf: Pull complete
ea00040a145a: Pull complete
eeb70119a2ba: Pull complete
066b6bd644f8: Pull complete
17862d4a3122: Pull complete
1cdcc815e975: Pull complete
73e0e2953af7: Pull complete
f719605a4369: Pull complete
Digest: sha256:07b8ccd32d40f47892ff5d074626cb9a866f49742658ce872dd1095cb51d9264
Status: Downloaded newer image for mongo:latest
Otra forma de ver los layers de las imagene es con el comando:
○ malala in ~
○ → docker image inspect redis
[
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:5dacd731af1b0386ead06c8b1feff9f65d9e0bdfec032d2cd0bc03690698feda",
"sha256:b52995330c04002c33243b1670ba11921564dcc58a69af275ded1ac9df1aac4e",
"sha256:1540700d9a4fa5405b9f81abda35fd97de8c9961b861829a879ceca15a4a82ff",
"sha256:f3918e45d85b758de3186c25c57c0bbdb99523bb651fc9856448d284e75940b1",
"sha256:290c0f1ac500d5329070a58dad2ced9714f06a4a5cbabaab7bc439f9dae8ae1d",
"sha256:f02e80b7746e03cffca22161cfc746c09521d138b138e34096a629abec7d3347"
]
},
]
Otra forma de ver los layers o el historias de una imagen es con el comando history:
○ malala in ~
○ → docker history redis
IMAGE CREATED CREATED BY SIZE COMMENT
No todos los valores del docker histoy son layers, algunos de estos son metadata y
vienen de la creación de la imagen en el dockerfile, valores como ENV, EXPOSE, CMD,
ENTRY solo crean metadata en la imagen.
RUN apt-get install...
EXPOSE 8080
RUN apk add npm...
FROM alpine
Image
Layer
Metadata
Layer
Layer
+ layers = menos
efectiva
- layers = mas efectiva
La suma de los layers construye una imagen. El responsable de unir estos layers es
el storage driver, existen actualmente estos:
● AUFS
● Overlay2
● Devicemapper
● Btrfs
● Zfs
En un sistema windows solo existe:
● Windowsfilter (CoW sobre NTFS)
Imagenes Seguras
Docker images
Docker images

Más contenido relacionado

La actualidad más candente

Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualizaciónMarcelo Ochoa
 
Presentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarmPresentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarmAlejandro Escanero Blanco
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoSergio Zambrano Delfa
 
Gestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsGestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsBEEVA_es
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
 
Solapas principales Ver(solapa activa) Editar Gestionar present...
 Solapas principales      Ver(solapa activa)     Editar     Gestionar present... Solapas principales      Ver(solapa activa)     Editar     Gestionar present...
Solapas principales Ver(solapa activa) Editar Gestionar present...Software Guru
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Micael Gallego
 
Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...Christian Rodriguez
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosMicael Gallego
 

La actualidad más candente (20)

Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Presentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarmPresentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarm
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de uso
 
ATICA DevOps
ATICA DevOpsATICA DevOps
ATICA DevOps
 
Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Integrando sonar
Integrando sonarIntegrando sonar
Integrando sonar
 
Gestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsGestión del software con Maven y Jenkins
Gestión del software con Maven y Jenkins
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
Conceptos avanzados en docker
Conceptos avanzados en dockerConceptos avanzados en docker
Conceptos avanzados en docker
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
 
Solapas principales Ver(solapa activa) Editar Gestionar present...
 Solapas principales      Ver(solapa activa)     Editar     Gestionar present... Solapas principales      Ver(solapa activa)     Editar     Gestionar present...
Solapas principales Ver(solapa activa) Editar Gestionar present...
 
Maven
MavenMaven
Maven
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 
Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
 

Similar a Docker images

De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando dockerChristian Rodriguez
 
FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020BelnGonzlezGarca1
 
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018Vicente Gerardo Guzman Lucio
 
PHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHPPHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHPRolando Caldas
 
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Keopx
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacionStivenLopez46
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemMario IC
 
Dockerparadesarrollo
DockerparadesarrolloDockerparadesarrollo
DockerparadesarrolloEric Zeidan
 
Docker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineMario IC
 
Desarrollando una Extensión para Docker
Desarrollando una Extensión para DockerDesarrollando una Extensión para Docker
Desarrollando una Extensión para DockerAngel Borroy López
 
Workshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los ContenedoresWorkshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los ContenedoresJesús A. Rodríguez B.
 

Similar a Docker images (20)

De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando docker
 
FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020
 
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
 
PHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHPPHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHP
 
Curso gratuito de Docker
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de Docker
 
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
 
PDIDTI-S7.pptx
PDIDTI-S7.pptxPDIDTI-S7.pptx
PDIDTI-S7.pptx
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacion
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
 
Dockerparadesarrollo
DockerparadesarrolloDockerparadesarrollo
Dockerparadesarrollo
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Taller docker _es-cl
Taller docker _es-clTaller docker _es-cl
Taller docker _es-cl
 
Introduccion A Docker
Introduccion A DockerIntroduccion A Docker
Introduccion A Docker
 
Meetup V.E.No.M. y docker
Meetup V.E.No.M. y dockerMeetup V.E.No.M. y docker
Meetup V.E.No.M. y docker
 
Docker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - Engine
 
Docker and networking
Docker and networkingDocker and networking
Docker and networking
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
Desarrollando una Extensión para Docker
Desarrollando una Extensión para DockerDesarrollando una Extensión para Docker
Desarrollando una Extensión para Docker
 
Workshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los ContenedoresWorkshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los Contenedores
 
Primeros pasos con Docker
Primeros pasos con DockerPrimeros pasos con Docker
Primeros pasos con Docker
 

Más de Victor S. Recio

Más de Victor S. Recio (7)

Infraestructura
InfraestructuraInfraestructura
Infraestructura
 
Golang workshop
Golang workshopGolang workshop
Golang workshop
 
Setting up a MySQL Docker Container
Setting up a MySQL Docker ContainerSetting up a MySQL Docker Container
Setting up a MySQL Docker Container
 
Docker up and running
Docker up and runningDocker up and running
Docker up and running
 
CoreOS Overview
CoreOS OverviewCoreOS Overview
CoreOS Overview
 
Docker Started
Docker StartedDocker Started
Docker Started
 
Presentation docker
Presentation dockerPresentation docker
Presentation docker
 

Último

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 

Último (20)

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 

Docker images

  • 2. Víctor S. Recio DevOps Engineer vrecio@opsecsecurity.com Fundador y Organizador ● Docker Santo Domingo ● Linux Dominicana ● Golang Dominicana ● OpenSaturday.org @vsrecio #DockerSantoDomingo #CodeCampSDQ @docker
  • 3.
  • 4.
  • 5.
  • 6. Agenda de trabajo 1. Qué es Docker y los contenedores? 2. Qué es una imagen de Docker? 3. Docker en los procesos DevOps 4. Dockerfile 5. Docker Registry 6. Manejo efectivo de las imágenes 7. Cómo funcionan los layers? 8. Imagenes Seguras
  • 7. Qué es Docker y los Contenedores?
  • 10.
  • 11. Qué es una imagen de Docker?
  • 12. Las imágenes de Docker están creadas en capas y están representadas como un único objeto. En la base de las imágenes de Docker existe un Sistema Operativo Mínimo corriendo todas las dependencias necesarias para correr solamente la aplicación para la que fue creada la imagen.
  • 13.
  • 14. 1.7GB 4MB / 84 MB Mientras más Ligero y Rápido Mejor!
  • 15.
  • 16. Docker en los Procesos DevOps
  • 17.
  • 18.
  • 20. # Use an official Python runtime as a parent image FROM python:2.7 # Set the working directory to /app WORKDIR /app # Copy the current directory contents into the container at /app ADD . /app # Install any needed packages specified in requirements.txt RUN pip install --trusted-host pypi.python.org -r requirements.txt # Make port 80 available to the world outside this container EXPOSE 80 # Define environment variable ENV NAME World # Run app.py when the container launches CMD ["python", "app.py"]
  • 21. # Create a Dockerfile for an ASP.NET Core application FROM microsoft/aspnetcore-build:2.0 WORKDIR /app # Copy csproj and restore as distinct layers COPY *.csproj ./ RUN dotnet restore # Copy everything else and build COPY . ./ RUN dotnet publish -c Release -o out
  • 22. ○ malala in ~ → docker build -t vsrecio/CodeCampSDQ Dockerfile
  • 23. ○ malala in ~ → docker build -t <repo/images>:<tag> . ● Tener un estándar para los tags y un control de registro ● Tener un nombre base para las imágenes
  • 24. Que NO hacer con tu Dockerfile!
  • 25. Nunca hacer lo siguiente: ● Apt-get update o install ● Node install o Algo parecido ● Yum install o update
  • 26. Nunca nombrarlos de la siguiente forma: ● Dockerfile.dev ● Dockerfile.staging ● Dockerfile.prod
  • 27. Buenas practicas! ● Usar .dockerignore ● Usar el multi-stage build ● Usar un usuario diferente a root ● Documentar tus Dockerfiles ● Nombra tus Build Steps (As klok) ● Usar imagenes multiplataformas cuando sea necesario
  • 28. FROM golang:1.7.3 WORKDIR /go/src/github.com/alexellis/href-counter/ RUN go get -d -v golang.org/x/net/html COPY app.go . RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . FROM alpine:latest RUN apk --no-cache add ca-certificates WORKDIR /root/ COPY --from=0 /go/src/github.com/alexellis/href-counter/app . CMD ["./app"] Multi-stage builds 1 2 Dockerfile
  • 30. Los registros Docker sirven para almacenar las diversas imágenes de Docker que utilicemos en nuestro sistema. De esta forma podremos subir imágenes nuevas a los registros, o descargarlas cuando las necesitemos en alguna máquina Docker. Docker hub es el registro por defecto de Docker, pero podemos utilizar otro de nuestra preferencia. https://hub.docker.com/_/nginx https://hub.docker.com/_/debian https://hub.docker.com/_/redis https://hub.docker.com/_/mongo
  • 31.
  • 32.
  • 34. Manipulación de las imágenes! ○ malala in ~ ○ → docker docker images pull <images>:<tag> Localmente las imagenes estan aqui: ● Linux: /var/lib/docker/ ● Windows: C:ProgramDatadockerwindowsfilter ○ malala in ~ ○ → docker docker images pull -a <images>:<tag> Descarga todas los tag de la imagen
  • 35. ○ malala in ~ ○ → docker images ls REPOSITORY TAG IMAGE ID CREATED SIZE ○ malala in ~ ○ → docker rm <image-name> ○ malala in ~ ○ → docker images ls --filter dangling=true REPOSITORY TAG IMAGE ID CREATED SIZE Las imágenes de Docker consisten en múltiples capas. Las Dangling images son capas que no tienen relación con ninguna imagen etiquetada. Ya no sirven un propósito y consumen espacio en disco. Podemos borrar todas las imágenes en docker con el comando docker system prune
  • 36. Docker actualmente soporta los siguientes tipos de filtrado: Dangling: Acepta (true or false) y retorna solamente dangling images. Before: Requiere de una ID de imagen o nombre de imagen como argumento y retorna todas las imágenes creadas antes de. Since: Igual que la anterior pero después de. Label: Filtra basado en labels, recuerda que docker image ls no despliega labels en la salida.
  • 37. ○ malala in ~ ○ → docker images ls --format “{{.Size}}” REPOSITORY TAG IMAGE ID CREATED SIZE Docker usa plantillas Go que puede utilizar para manipular el formato de salida de ciertos comandos y controladores de registro. Docker proporciona un conjunto de funciones básicas para manipular elementos de plantilla. ○ malala in ~ ○ → docker images ls --format “{{.Repository}}: {{.Tag}}: {{.Size}}” REPOSITORY TAG IMAGE ID CREATED SIZE
  • 38. ○ malala in ~ ○ → docker search debian --filter “is-official=true” NAME DESCRIPTION STARS OFFICIAL AUTOMATED En la línea de comandos de Docker Hub también podemos usar el poder del filtrado de las imágenes que buscamos. ○ malala in ~ ○ → docker search debian --filter “is-automated=true” NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  • 40. Los contenedores Docker son bloques de construcción para aplicaciones. Cada contenedor es una imagen con una capa readable/writeable sobre un grupo de capas de solo lectura. Estas capas (también llamadas imágenes intermedias) se generan cuando los comandos en el Dockerfile se ejecutan durante la construcción de la imagen del Docker.
  • 41. ○ malala in ~ ○ → docker pull mongo Using default tag: latest latest: Pulling from library/mongo 34667c7e4631: Pull complete d18d76a881a4: Pull complete 119c7358fbfc: Pull complete 2aaf13f3eff0: Pull complete f7833eaffdda: Pull complete 8287cb5b9daf: Pull complete ea00040a145a: Pull complete eeb70119a2ba: Pull complete 066b6bd644f8: Pull complete 17862d4a3122: Pull complete 1cdcc815e975: Pull complete 73e0e2953af7: Pull complete f719605a4369: Pull complete Digest: sha256:07b8ccd32d40f47892ff5d074626cb9a866f49742658ce872dd1095cb51d9264 Status: Downloaded newer image for mongo:latest
  • 42. Otra forma de ver los layers de las imagene es con el comando: ○ malala in ~ ○ → docker image inspect redis [ "RootFS": { "Type": "layers", "Layers": [ "sha256:5dacd731af1b0386ead06c8b1feff9f65d9e0bdfec032d2cd0bc03690698feda", "sha256:b52995330c04002c33243b1670ba11921564dcc58a69af275ded1ac9df1aac4e", "sha256:1540700d9a4fa5405b9f81abda35fd97de8c9961b861829a879ceca15a4a82ff", "sha256:f3918e45d85b758de3186c25c57c0bbdb99523bb651fc9856448d284e75940b1", "sha256:290c0f1ac500d5329070a58dad2ced9714f06a4a5cbabaab7bc439f9dae8ae1d", "sha256:f02e80b7746e03cffca22161cfc746c09521d138b138e34096a629abec7d3347" ] }, ]
  • 43. Otra forma de ver los layers o el historias de una imagen es con el comando history: ○ malala in ~ ○ → docker history redis IMAGE CREATED CREATED BY SIZE COMMENT No todos los valores del docker histoy son layers, algunos de estos son metadata y vienen de la creación de la imagen en el dockerfile, valores como ENV, EXPOSE, CMD, ENTRY solo crean metadata en la imagen.
  • 44. RUN apt-get install... EXPOSE 8080 RUN apk add npm... FROM alpine Image Layer Metadata Layer Layer + layers = menos efectiva - layers = mas efectiva
  • 45. La suma de los layers construye una imagen. El responsable de unir estos layers es el storage driver, existen actualmente estos: ● AUFS ● Overlay2 ● Devicemapper ● Btrfs ● Zfs En un sistema windows solo existe: ● Windowsfilter (CoW sobre NTFS)