Sunteți pe pagina 1din 20

EntrenamientoenDocker

NDICE

IntroduccionaDocker
QueesDocker?
Introduccinacontenedores
ContenedoresvsMquinasvirtuales
ConceptosdeDockeryTerminologa
DockeryelkerneldeLinux
ComoinstalarDocker?
ElclientedeDockeryelDemonio
ContenedoreseimagenesenDocker
Registroyrepositorio
DockerHub
OrquestacindeDocker
BeneficiosdeDocker
IntroduccinalasImgenes
Mostrarlasimgeneslocales
Etiquetasenimgenes
Empezandoconcontenedores
Creaciondeuncontenedor
Procesosdeuncontenedor
Encontrarsuscontenedores
Ejecutandoenmodoindependiente
FundamentosdeDocker
Construccindeimgenes
Capasdeimgenes
Lacapaescribibledelcontenedor
Dockercommit
ElDockerfile

IntroduccionaDocker

QueesDocker?

Dockeresunaplataformaparadesarrollar,entregaryejecutaraplicacionesusandola
tecnologadevirtualizacinporcontenedores.

LaplataformaDockerestcompuestapormltiplesproductos/herramientas

DockerEngine
DockerHub
DockerMachine
DockerSwarm
DockerCompose
Kitematic

Unpocoparaentenderlatecnologadedockernecesitamosentendercmofuncionaba
todoantesdeDocker

Unaaplicacinenunservidorfsico

Enunservidorfsicoesinstaladoelsistemaoperativoysobreestelaaplicacin

Cualessonlosproblemasdeesemodelo?,muchos
Tiemposdedesplieguelentos
Costosexcesivos
Prdidaderecursos
Dificultadparaescalar
Dificultadparamigrar
Atadoaunproveedor


HypervisorbasedVirtualizationotambinconocidocomomquinasvirtuales

Unservidorfsicopuedecontenermltiplesaplicaciones
Cadaaplicacinejecutaunamquinavirtual

Beneficiosdelasmquinasvirtuales

Mejorusodelosrecursoscomunes
Unamquinafsicadivididaenmltiplesmquinasvirtuales
Fcildeescalar
Mquinasvirtualesenlanube
Elasticidadrpida
modelodepagoporuso

Limitacionesdelasmquinasvirtuales
Cadamquinavirtualtodavarequiere
AsignacindeCPU
Almacenamiento
RAM
Unsistemaoperativohuspedcompleto
Entremsmquinasvirtualesejecute,msrecursosnecesita
UnSistemaoperativohuspedsignificaprdidaderecursos
Laportabilidaddelaaplicacinnoestgarantizada

Introduccinacontenedores

Lavirtualizacinbasadaencontenedoresutilizaelkernelenelsistemaoperativoanfitrinpara
ejecutarmltiplesinstanciashusped

Cadainstanciahuespedesllamadauncontenedor
Cadacontenedortienesupropio
Sistemadearchivosraz
Procesos
Memoria
Dispositivos
Puertosdered

ContenedoresvsMquinasvirtuales

Loscontenedoressonmaslivianos
Nonecesitaninstalarunsistemaoperativohuesped
MenorCPU,RAMoespaciodealmacenamientorequerido
Mscontenedorespormquinaquelasmquinasvirtuales

Mejorportabilidad

ConceptosdeDockeryTerminologa

DockeryelkerneldeLinux

ElmotordeDockereselprogramaquepermitequelocontenedoresseanconstruidos,
empaquetadosyejecutados.
ElmotordeDockerusaelespaciodenombresdelKerneldeLinuxyelcontroldegrupos.
Losespaciosdenombrenosdanlosespaciosdetrabajoaislados.

ComoinstalarDocker?

1. Siguelasinstruccionespublicadasenhttps://docs.docker.com/installation

$wgetq0https://get.docker.com|sh

2. Ejecuteelcontenedorhelloworldparaprobarsuinstalacin

$sudodockerrunhelloword

3. Agreguesucuentadeusuarioalgrupodocker

$sudousermodaGdocker<usuario>

4. Salgadelaterminalyvuelvaaingresarparaqueloscambiostenganefecto


5. Verifiquequepuedeejecutarelcontenedorhelloworldsinusarsudo

$dockerrunhelloworld

ElclientedeDockeryelDemonio

Arquitecturacliente/servidor
Elclientetomalasentradasdelusuarioylasenvaaldemonio
Eldemonioconstruye,ejecutaydistribuyeloscontenedores
Elclienteyeldemoniosepuedenejecutarenelmismoanfitrinoendiferentesanfitriones
Clientebajolneadecomandosomedianteunainterfazgrfica(Kitematic)

Revisarlaversindelclienteyeldemonio

$sudodockerversion

ContenedoreseimagenesenDocker

Imgenes

Plantillasdesololecturausadaparacrearcontenedores
ConstruidaporusteduotrosusuariosdeDocker
AlmacenadaenDockerHubosuregistrolocal

Contenedores

plataformadeaplicacionaislada
Contienentodolonecesarioparaejecutarsuaplicacin(librerias,binarios)
Basadaenunaomsimgenes

Registroyrepositorio

UnejemploderegistroesDockerHub.dentrodelregistrolasimgenessonalmacenadasen
repositorios

DockerHub

Eselregistropblicoquecontieneunamplionmerodeimgenesdisponiblesparasuuso

OrquestacindeDocker

TresherramientasparaorquestaraplicacionesdistribuidasconDocker

DockerMachine:Herramientaqueprovisionalosanfitrionesdedockereinstalaelmotor
deDockerenellos.
DockerSwarm:HerramientaqueagrupamuchosMotoresycontenedoresprogramados.
DockerCompose:Herramientaparacrearygestionaraplicacionesmulticontenedores

BeneficiosdeDocker

Separacindepreocupaciones
Losdesarrolladoresseenfocanenconstruirsusaplicaciones
Losadministradoresdesistemasseenfocaneneldeployment
Ciclodedesarrollorpido
Portabilidaddelaaplicacion
Construidoenunentorno,entregadoenotro
Escalabilidad
Fcildesplieguedenuevoscontenedoressiesnecesario
Ejecucindemsaplicacionesenunasolamquina

IntroduccinalasImgenes

LasimgenespuedenserbuscadasenDockerhub,hayunmontndeimgenesdisponiblespara
serusadas

CreaunacuentaenDockerHub,navegaloparabuscarimgenesysuscaractersticas
Lasimagenesconellogodedockersonoficiales
Tagsdelasimagenes

Lasimgenesresidenenvariosrepositorios.

Mostrarlasimgeneslocales

$sudodockerimages

CuandoseestcreandouncontenedorapartirdeunaimagenIntentarausarprimerouna
imagenlocal

Silaimagenlocalnoesencontrada,eldemoniodeDockerbuscarendockerHubamenosque
otroregistroseaespecificado.

Etiquetasenimgenes

Lasimagenessonespecificadasporrepository:tag
Lamismaimagenpuedetenermultiplesetiquetas
Laetiquetapordefectoeslatest
ReviseelrepositorioenDockerHubparaverqueetiquetasestndisponibles

Empezandoconcontenedores

Creaciondeuncontenedor

Useelcomandodockerrun

$sudodockerrun[options][image][command][args]

Laimagenesespeificadaconrespository:tag


Ejemplos

$sudodockerrunubuntu:14.04echoHelloWorld
$sudodockerrunubuntupsax

Ejecutaruncontenedorsimple

1. Ensuterminaescriba

$sudodockerrunubuntu:14.04echoHelloWorld

2. Observelaalida
3. Entoncesescriba

$sudodockerrunubuntu:14.04psax

4. Observelasalida
5. Notequelaejecucinfuemuchomsrpidasisecomparaelprimercontenedorquefue
ejecutad.estoesdebidoalhechodequedockerahoratienelaimagen14.04localmentey
noesnecesariodescargarla.

Contenedoresconlaterminal

Useiytcondockerrun
LamarcailediceadockerqueconecteaSTDIN
(https://es.wikipedia.org/wiki/Entrada_est%C3%A1ndar)enelcontenedor
Lamarcatespecificaqueobtengaunapseudoterminal

IMPORTANTE:Necesitaejecutarunprocesodeterminalcomosucomando(Ej:/bin/bash)

Ejemplo:

$sudodockerrunitubuntu:latest/bin/bash

Ejercicio:Ejecutauncontenedoryaccedealaterminal

1. Creaauncontenedorusandolaimagendeubuntuyeltag14.04yconectedalSTDINya
laterminal.

$sudodockerrunitubuntu:14.04/bin/bash

2. Ensucontenedorcreeunnuevousuariousandosupnombreyapellidocomonombrede
usuario

$sudoadduserminombre

3. Agregueelusuarioalgruposudo

$adduserninombresudo

4. Salgadelconenedor

$exit

5. Notecomoelcontenedorseapaga
6. Denuevoejecute

$sudodockerrunitubuntu:14.04/bin/bash

7. Pruebeencontrarsuusuario
8. Notequeesteyanoexiste

Procesosdeuncontenedor

Uncontenedorsoloseejecutaeltiempoqueelprocesoquehaespecificadocondockerrunse
estejecutando.

SuprocesosiempreesPID1dentrodelcontenedor

IDdelcontenedor

LoscontenedorespuedeserespecificadosusandosuIDonombre
IDgrandeyIDcorto
ElIDcortoynombrepuedenserobtenidosusandoelcomandodockerpsparalistarlos
contenedores
elIDlargoobtenidoinspeccionandouncontenedor

Encontrarsuscontenedores

Usedockerpsparalistarloscontenedores.
Lamarcaaparalistartodosloscontenedores(incluidosloscontenedoresqueestn
detenidos)

Ejecutandoenmodoindependiente

Tambinconocidocomoejecutarabajonivelocomoundemonio
Uselamarcad
Observelasalida,usedockerlogs[containerid]

FundamentosdeDocker

Quehemosaprendido

IntroduccinaDocker
Beneficiosdelavirtualizacinbasadaencontenedores
ConceptosytrminosdeDocker
Ejemplossencillosdecontenedores
Comandos
dockerrun
dockerps
dockerimages

Construccindeimgenes

Vamosavercmopodemosenviarloscambiosquehemoshechoenuncontenedor

Capasdeimgenes

Lasimagenesestncompuestasdemltiplescapas
Unacapaestansolootraimagen
Cadaimagencontieneunacapabase
Dockerusacopiasobreelsistemadeescritura
Lascapassondesololectura

Lacapaescribibledelcontenedor

Dockercreaunacapasuperiorescribibleparaloscontenedores
Lasimagenespadresolosondelectura
Todosloscambiossonhechosenlacapaescribible

Dockercommit

Elcomandodockercommitguardaloscambiosenuncontenedorcomounanueva
imagen
Sintaxis
dockercommit[options][containerID][repository:tag]
Elnombredelrepositoriodeberaserdelaformanombredeusuario/aplicacion
PuedereferenciarelcontenedorconelnombredelcontenedorenlugardelID

Ejemplo:

GuardedelcontenedorconelID984d25f537c5comounanuevaimagenenelrepositorio
johnnytu/myapplication.Etiquetelaimagencomo1.0

dockercommit984d25f537c5johnnytu/myapplication:1.0

Ejercicio:Construyeunanuevaimagen

1. Creauncontenedordesdelaimagendeubuntuyejecuteunaterminaldebash

dockerrun-i-tubuntu:14.04/bin/bash

2. Dentrodelcontenedorinstalecurl

aptgetinstallcurl

3. Salgadelcontenedor

exit

4. Ejecutedockerpsa
ytomenotadelIDdelcontenedor
5. Guardeelcontenedorcomounanuevaimagen,paraelnombredelrepositoriouse
<sunombre>/curl.Etiquetelaimagencomo1.0

dockercommit<IDdelcontenedor><sunombre>/curl:1.0

6. Ejecutedockerimages
yverifiquequepuedeversuimagen

Ejercicio:Usaunanuevaimagen

1. Creeuncontenedorusandolanuevaimagenquehacreadoenelanteriorejercicio.
Ejecute/bin/bashcomoelprocesoparaobteneraccesoalaterminal

dockerrunit<sunombre>/curl:1.0/bin/bash

2. Verifiquequecurlestinstalado

whichcurl

ElDockerfile

Anteriormentehemosaprendidocomoguardarloscambioshechosenuncontenedorcomouna
imagen,otromtodoesusarelDockerfile

IntroduccinalDockerfile

UnDockerfileesunarchivodeconfiguracinquecontienelasinstruccionesparaconstruiruna
imagendedocker

Proporcionaunaformasmasefectivadeconstruirimagenescomparadoconelusode
dockercommit
Seadaptafcilmenteasuscondicionesdeintegracincontinuaprocesosdedespliegue

InstruccionesdeunDockerfile

Lasinstruccionesespecificanquehacercuandoseestconstruyendolaimagen
LasinstruccionesFROMespecificanculdeberaserlaimgenbase
LasinstruccionesRUNespecificanuncomandoaejecutar

#Ejemplodeuncomentario
FROMubuntu:14.04
RUNaptgetinstallvim
RUNaptgetinstallcurl

InstruccionRUN

CadainstruccinRUNejecutaelcomandoenlacapasuperiorescribibleyrealizaun
commitdelaimagen
PuedeagregarmltiplesinstruccionesRUNusando&&


RUNaptgetupdate&&aptgetinstally\
curl\
vim\
openjdk7jdk

DockerBuild

Sintaxis

dockerbuild[options][ruta]

Opcincomnparaetiquetar

dockerbuildt[repositorio:etiqueta][ruta]

Ejercicio

Construyaunaimagenusandolacarpetaactualcomolarutacontextual.Pongalaimagenenel
repositoriojohnnytu/myimageyetiquetelocomo1.0

dockerbuildtjohnnytu/myimage:1.0.

Talcomoloanteriorperouselacarpetamiproyectocomolarutadecontexto

dockerbuildtjohnnytu/myimage:1.0miproyecto

Ejercicio:ConstruyedesdeunDockerfile

Ensudirectoriodeusuario,creeunacarpetallamadatest
Enlacarpetatest,creeunaarchivollamadoDockerfile
Enelarchivoespecifiqueusarubuntu14.04comolaimagenbase

FROMubuntu:14.04

Escribaunainstruccinparainstalarcurlyvimdespusdeunaptgetupdate

RUNaptgetupdate&&aptgetinstallycurl\vim

ConstruyeunaimagendesdeelDockerfile.Deleelrepositorio<sunombre>/testimagey
etiquetelocomo1.0


dockerbuildtjohnnytu/testimage:1.0.

Creeuncontenedorusandosunuevaimagencreadayverifiquequecrulyvimestn
instalados.

InstruccinCMD

CMDdefineuncomandopordefectoparaserejecutadocuandoelcontenedorescreado.
CMDnorealizaaccionesdurantelaconstruccindelaimagen
SoportaFormatoShellyformatoEXEC
SolopuedeserespecificadounavezenelDockerfile
Puedesersobreescritoentiempodeejecucin

Ejemplo

FormatoShell
CMDping127.0.0.1c30

FormatoExec
CMD[ping,127.0.0.1,c,30]

Ejercicio:PruebaelCMD

1. VealacarpetadepruebasyabretuDockerfiledelanteriorejercicio
2. Agregalasiguientelneaalfinal

CMD[ping,127.0.0.1,c,30]

3. Construyelaimagen

dockerbuildt<sunombre>/testimage:1.1

4. Ejecuteuncontenedordesdelaimagenyobservelasalida

dockerrun<sunombre>/testimage:1.1

5. Ejecuteotrocontenedordesdelaimagenyespecifiqueelcomandoecho

dockerrun<sunombre>/testimage:1.1echohelloworld

6. ObservecomoelargumentodelcontenedorsobreescribelainstruccinCMD


InstruccinENTRYPOINT
Defineelcomandoqueejecutarcuandouncontenedoresejecutado
LosargumentosentiempodeejecucinylasinstruccionesCMDsonpasadascomo
parmetrosalainstruccinENTRYPOINT
FormaShellyEXEC
laformaEXECespreferidayaquealaformaShellnopuedeaceptarargumentosen
tiempodeejecucin
Bsicamenteloscontenedoresseejecutancomounejecutable

Ejemplo

ENTRYPPINT[ping]

Administracindeimgenesycontenedores

Iniciarydetenercontenedores

Encuentresuscontenedoresprimerocondockerps
ytomenotadelIDoelnombre
dockerstart
ydockerstop

Ejemplo:

listartodosloscontenedores
dockerpsa

IniciaruncontenedorusandoelID
dockerstart<IDdelcontenedor>

DeteneruncontenedorusandoelID
dockerstop<IDdelcontenedor>

Comoobteneraccesoalaterminaldelcontenedor

Useelcomandodockerexecparainiciarotroprocesodentrodeuncontenedor
Ejecute/bin/bashparateneraccesoalbashshell
dockerexecit[IDdelcontenedor]/bin/bash
Salirdelaterminalnodetendrelcontenedor

Eliminacindecontenedores

Solosepuedeneliminarcontenedoresquehansidodetenidos
useelcomandodockerrm
EspecifiqueelIDdelcontenedoroelnombre

Eliminacindeimgeneslocales

Useelcomandodockerrmi
dockerrmi[IDdelcontenedor]
dockerrmi[repo:tag]
Siunaimagenesetiquetadavariasveces,eliminecadaetiqueta

RepositoriosdeDockerHub

LosusuariospuedencrearsuspropiosrepositoriosenDockerHub
Hayrepositoriospblicosyprivados
Sepuedenenviarimgeneslocalesaunrepositorio

EnviarimgenesaDockerHub

1. Useelcomandodockerpush
2. sintaxis:dockerpush[repo:tag]
3. Elrepositoriolocaldebetenerelmismonombreyetiquetaqueelrepositorioen
DockerHub

Etiquetadodeimgenes

UsadopararenombrarelrepositoriodeunaimagenlocalantesdeenviarloaDockerHub
sintaxis:dockertag[IDdelaimagen][repo:etiqueta]dockertag[repolocal:etiqueta]
[repoDockerHub:etiqueta]

Ejemplo:

EtiquetarunaimagenconelID(trainingtema/testexampleeselnombredelrepositorioen
DockerHub)

dockertagedfc212de17btrainingteam/testexample:1.0

Etiquetarunaimagenuandolaetiquetadelrepositoriolocal


dockertagjohnnytu/testimage:1.5trainingteam/testexample

Ejercicio:EnviaraDockerHub

AccedaasucuentadeDockerHub.
Creeunnuevorepositoriopblicollamadotestexample.
Etiquetesuimagenlocalparadarleelmismonombrequeelrepositorioquehacreadoen
DockerHub.

dockertag<sunombre>/testimage:1.1<sunombre>/testexample:1.1

EnvelanuevaimagenaDockerHub

dockerpush<sunombre>/testexample:1.1

VeaturepositoriodeDockerHubyrevisesiexisteeltag

DistribuciondeimgenesenDockerhub

Volumenesdedocker

Redesbsicasdecontenedores

Dockerenintegracioncontinua

S-ar putea să vă placă și