Вы находитесь на странице: 1из 32

LinuxTipsTrainingCenter

youtube.com/linuxtips

LinuxTipsTrainingCenter

Sumrio

1.

2.

3.

4.

Criandoegerenciandoimagens
1.1.
Ok!Agoraeuquerocriarminhaimagem,posso?
1.2.
Vamoscomeardocomeoento,Dockerfile!
1.3.
BoraaprenderumpoucomaissobreDockerfile?
1.4.
Vamoscustomizarumaimagembaseagora?
Compartilhandoasimagens
2.1.
OqueoDockerHub?
2.2.
Vamoscriarumacontalento?
2.3.
Agoraboracompartilharessasimagensnainterwebs!
2.4.
Noconfionainternet,possocriaromeuregistrylocal?
Gerenciandoarededoscontainers
3.1.
Consigofazercomqueaportadocontainerrespondanaportadohost?
3.2.
Ecomoelefazisso,mgica?
3.3.
SempreoDockerutiliza172.16.X.Xoupossoconfiguraroutra?
ControlandooDaemondoDocker
4.1.
OpesdeSockets
4.2.
OpesdeStorage
4.3.
Opesdiversas

youtube.com/linuxtips

LinuxTipsTrainingCenter

Criandoegerenciandoimagens

Ok!Agoraeuquerocriarminhaimagem,posso?

Claroquepode!

Edigomais,vamosaprenderdeduasformas,muitosimpleseintuitivas.

Uma das coisas mais interessantes do Docker, a possibilidade de voc usar imagens
criadas por outras pessoas ao redor do mundo atravs de algum registry como o
DockerHub, isso agiliza muito a sua vida, ainda mais quando voc precisa apenas testar
uma determinada tecnologia. O POC se torna muito mais gil e fazendo com que voc
consiga testar diversas ferramentas no mesmo tempo que levaria paratestarsomenteuma
semoDocker.

Porm, em determinados momentos precisamos criar a nossa prpria imagem do zero, ou


ento modificar uma imagem criada por terceiros e salvar essas alteraes em uma nova
imagem.

Agora vamos ver os dois casos, como montar um distribuio praticamente do zero
utilizando somente instrues atravs do Dockerfile e outra realizando modificaes em
umaimagemjexistenteesalvandoemumaimagemnova.

Vamoscomeardocomeoento,Dockerfile!

Vamos montar a nossa primeira imagem utilizando como roteiro de criao um Dockerfile,
vocirveroquantosimplesacriaodeumDockerfilebemcompletoeprtico.:)

Paracomear,vamoscriarumdiretriochamado
"/root/Dockerfiles".

#mkdir/root/Dockerfiles

youtube.com/linuxtips

LinuxTipsTrainingCenter

Agora comearemos a criao do nosso Dockerfile, nosso mapa de criao da imagem.


Para que possamos melhor organizlos, vamos criar um diretrio chamado"apache"onde
guardaremosessenossoprimeiroexemplo:

#cd/root/Dockerfiles/
#mkdirapache

Por enquanto, vamos apenas criar um arquivo chamado Dockerfile e adicionar o contedo
conformeexemploabaixo:

#cdapache
#vimDockerfile

Muito bom! Agora que voc j adicionou as informaes conforme o exemplo, vamos
entendercadaseoutilizadanessenossoprimeiroDockerfile:

FROM
=>Indicaaimagemaservircomobase
MAINTAINER
=>QuemomantenedordesseDockerfile/Imagem
RUN
=>Listadecomandosquedesejaexecutarnacriaodaimagem

Bem, por enquanto est bem bsico, apenas indicando qual ser a nossa imagem base,
nesseexemplovamosutilizaroUbuntu.
Tambm informamos quem o autor da imagem e por fim vamos instalar o Apache2 via
aptget
.

Aps a criao do arquivo acima, vamos "


buildar"
, vamos construir a nossa imagem da
seguinteforma:

youtube.com/linuxtips

LinuxTipsTrainingCenter

#dockerbuild.

youtube.com/linuxtips

LinuxTipsTrainingCenter

Muito bem, como podemos notar na ltima linha da sada do "


docker build
", a imagem foi
criadacomsucesso!:D

Vamos executar o "


docker images
" para ver se est tudo certo com a nossa primeira
imagem!

#dockerimages

Anossaimagemfoicriada,aprimeiradalista!Pormtemosumproblema.:/

A imagem foi criada e est totalmente funcional,pormquando"


buildamos"
aimagem,no
passamos o parmetro
"t" que o responsvel por adicionar uma tag (nome:versao)
imagem.

Vamosajustarconformeoexemploaseguir:
youtube.com/linuxtips

LinuxTipsTrainingCenter

#dockerbuildtlinuxtips/apache:1.0.

Agoravamosverserealmenteajustouaimagem,adicionandoumnomeeversoaela:

#dockerimages

Maravilha!Funcionouconformeespervamos!

Vamoscriarumcontainerutilizandoessaimagemcomobase:

#dockerruntilinuxtips/apache:1.0

Agora j estamos no container, vamos verificar se o Apache est em execuo, se ainda


noestiver,vamosiniciloeverificarseaporta80est
LISTEN
.

#psef
#/etc/init.d/apache2start
#psef
#netstatatunp
#ifconfigeth0

youtube.com/linuxtips

LinuxTipsTrainingCenter

Na figura acima, possvelobservar o


ipdocontainernasadado"
ifconfig"
.Vamostestara
comunicaocomocontainerapartirdo
host
.

No
host
digite:

#curl<IPDOCONTAINER>

Como notaram, o
curl retornou a pgina de boas vindas do Apache2, ou seja, tudo est
funcionandomuitobemeoApache2respondendoconformeesperado!

youtube.com/linuxtips

LinuxTipsTrainingCenter

BoraaprenderumpoucomaissobreDockerfile?

Vamos agora aprender um pouco mais sobre as opes que podemos utilizar quando
estamoscriandoumDockerfile:

ADD => Copia novos arquivos, diretrios, arquivos TAR ou arquivos remotos e os
adicionamao
filesystem
docontainer

CMD => Executa um comando, diferente do RUN que executaocomandonomomentoem


queest"buildando"aimagem,oCMDexecutanoiniciodaexecuodocontainer

LABEL
=>Adicionametadadosaimagemcomoverso,descrioefabricante

COPY
=>Copianovosarquivosediretrioseosadicionamao
filesystem
docontainer

ENTRYPOINT => Permite voc configurar um container para rodar um executvel, e


quandoesseexecutvelforfinalizado,ocontainertambmser

ENV
=>Informavariveisdeambienteaocontainer

EXPOSE
=>Informaqualportaocontainerestarouvindo

FROM => Indica qual imagem ser utilizada como base, ela precisa sera primeiralinhado
Dockerfile

MAINTAINER
=>Autordaimagem

RUN => Executa qualquer comando em umanovacamadanotopodaimageme"


commita
"
as alteraes. Essas alteraes voc poder utilizar nas prximas instrues de seu
Dockerfile

USER
=>Determinaqualousurioserutilizadonaimagem.Por
default
oroot

VOLUME
=>Permiteacriaodeumpontodemontagemnocontainer

WORKDIR
=>Responsvelpormudardodiretrio/(raiz)paraoespecificadonele

youtube.com/linuxtips

LinuxTipsTrainingCenter

Vamoscustomizarumaimagembaseagora?

Vamos agora criar uma nova imagem, porm no vamos utilizar o Dockerfile. Vamos
executar um container com uma imagem base e realizar as modificaes que desejarmos,
depoisvamossalvaressecontainercomoumanovaimagem!
Simples,rpidoefcil!

Bem, primeiro precisamos criar um container. Vamos dessa vez utilizar um container
Debian,somenteparavariar.:D

#dockerruntidebian:8/bin/bash

Agora vamos fazer as alteraes que desejamos. Vamos fazer o mesmo que fizemos
quando montamos nossa primeira imagem com o Dockerfile, ou seja, fazer ainstalaodo
Apache2.:D

#aptgetupdate&&aptgetinstallyapache2&&aptgetclean

Agora que j instalamos o Apache2, vamos sair do container para que possamos
"
commitar
"anossaimagembaseadanessecontaineremexecuo:

#dockercommitm"meucontainer"CONTAINERID
#dockerimages

Reparem que nossaimagemficoucomo


<none>emseunomeeTAG.Paraquepossamos
ajustar e dar um nome e verso a nossa imagem, vamos usar o comando "
docker tag
"
conformemostramosabaixo:
youtube.com/linuxtips

LinuxTipsTrainingCenter

#dockertagIMAGEIDlinuxtips/apache_2:1.0

Agorasim!!!Temosanossaimagemcriadaecomonomeeversoespecificados.

Vamosiniciarumcontainerutilizandoessaimagemqueacabamosdecriar:

#dockerruntilinuxtips/apache_2:1.0/bin/bash

VamossubiroApacheetestaracomunicaodocontainer:

#/etc/init.d/apache2start
#psef
#sstl
#ipaddr

youtube.com/linuxtips

LinuxTipsTrainingCenter

Boaaa! Agora j temos o Apache2 em execuo. Vamos sair do container e testar a


comunicaocomoApacheapartirdo
host
:

#curl172.17.0.30

Como podemos notar ele retornou a pgina deboasvindas doApache2!Tudofuncionando


conformeesperado!

youtube.com/linuxtips

LinuxTipsTrainingCenter

Compartilhandoasimagens

Bem,japrendemoscomocriarumaimagemdecontainer,sejaviaDockerfile ouatravsda
modificao de um container. Aprendemos alguns comando interessantes como o "
docker
build
"eo"
dockercommit
".

Agora vamos aprender como compartilhar essas imagens, seja em um


registry local ou
entono
registry
doprprioDockerHub.

OqueoDockerHub?

DockerHub um repositrio pblico e privado de imagens e que disponibiliza diversos


recursos alm disso, como o sistema de autenticao, build de imagens de forma
automtica, a possibilidade de criar grupos de usurios de sua organizao, entre outras
coisas. Pessoas e empresas se juntam, criam seus containers seguindomelhoresprticas,
testando tudo direitinho e depois disponibiliza l pra voc usar sem ter nenhum trabalho.
Isso uma mo na roda gigantesca, uma vez que voc no vai ter que perder tempo
instalando coisas e as vezes at indo aprender como configurar tal servio,bastairnohub
e procurar, provavelmente algum j criou um container o qual vocpodeusarpelomenos
debase!

Provavelmentevocnovaiquererbaixardainternet,mesmoquedoregistrydoprprio
docker(srio)esubirnoseuambientedeproduoalgodoqualvocnotemcertezade
comofunciona,oque,etc.PraresolveresseproblemaoDockerdisponibilizaalgumas
funcionalidades,comoocomando
dockerinspect
,quejvimosantes,quandofalavamos
devolumes,lembra?Naquelemomentousamosaflagfeespecificamosumcampode
pesquisapoisointuitoeramostrarsomenteapartequeestavasendodiscutidanaquele
capitulo,pormodockerinspectvaimuitoalmdisso,sempassarofelevaiteretornar
todosasinformaescontidasnaquelaimagem,desdeaimagembasequefoiutilizada,
pontosdemontagem,configuraes,enfim,muitacoisa.Testaai

youtube.com/linuxtips

LinuxTipsTrainingCenter

#dockerinspectdebian

AsvezesserdisponibilizadojuntocomaimagemoseurespectivoDockerfileeaificabem
maisfcil,bastaleressearquivoprasaberexatamentecomoelefoicriado:)

Um comando bastante interessante que nos faz entender como umaimagemdivididaem


camadase,principalmente,oquefoifeitoemcadacamadao"
dockerhistory"

#dockerhistorylinuxtips/apache:1.0

Perceba que as duas primeiras linhas da sada do comando acima so referente as duas
informaes que pedimosparaadicionarimagemnoDockerfile,quemomantenedorea
instalao do Apache2. As demais camadas so originais da imagem que pegamos do
DockerHubatravsdainstruoFROM.

ExistetambmumsitechamadoImageLayers,elefazexatamenteamesmacoisaqueo
dockerhistory,pormvocnoprecisabaixaraimagem,e,bom,web.OImageLayers
podeseracessadoem:https://imagelayers.io/

O DockerHub, como j falamos, tem muitos componentes, dentre eles o responsvel pelo
repositriodeimagensumcarachamado
registry
.
youtube.com/linuxtips

LinuxTipsTrainingCenter

possvel voc utilizar um


registry local ao invs de um na nuvem, como o DockerHub ou
outros registries que so facilmente encontradosnainternet.Falaremosdissocomdetalhes
maisafrente:P

Para que voc possa utilizar o DockerHub para gerenciar as suas imagens,necessrioa
criao de sua conta. Existem duas formas para se criar a conta, uma atravs da url
http://hub.docker.com/account/signup ou ento atravs da linha de comando utilizando o
comando"dockerlogin".

Vamoscriarumacontalento?

Bora criar uma conta no DockerHub, porm noiremosfazeratravsdonavegador,vamos


criar via linha de comando pois acredito ser a maneira mais eficiente e fcil de se realizar
essatarefa.

Para que consiga realizar a criao da sua conta, necessrio utilizar o comando "
docker
login
". O comando "
docker login"
tambm utilizado para autenticar no DockerHub aps a
criaodaconta.

Vamoscriarumcontacomoexemplo:

#dockerlogin

Aps inserir seu usurio, senha e email, enviado umamensagemdeconfirmaoparao


endereoquevocinformou.

A partir da confirmao do seu email, j possvel se autenticare comearafazerusodo


DockerHub.

#dockerlogin

youtube.com/linuxtips

LinuxTipsTrainingCenter

Voc consegue criar repositrios pblicos vontade, porm na conta free voc somente
tem direito a um repositrio privado. Caso precise demaisdoqueumrepositrioprivado,
necessriooupgradedasuacontaecomissoopagamentodeumamensalidade.:)

Caso voc queira especificar outro


registry ao invs do DockerHub, basta passar o
endereocomoparmetrocomoabaixo:

#dockerloginregistry.seilaqual.com

Agoraboracompartilharessasimagensnainterwebs!

UmavezquejcriamosanossacontanoDockerHub,podemoscomearautilizla!

Como exemplo, vamos utilizar a imagem que montamos com o Dockerfile no capitulo
anterior chamada
linuxtips/apache.
Quando realizarmos o
upload dessa imagem para o
DockerHub,orepositrioteromesmonomedaimagem,ouseja,
linuxtips/apache.

Agora, vamos utilizar o comando "


docker push
", responsvelporfazero
uploaddaimagem
dasuamquinaslocalato
registry
doDockerHub,comomostradonoexemploabaixo:

#dockerimages
#dockerpushlinuxtips/apache

Acessando a url
https://hub.docker.com/ voc conseguir visualizar o repositrio que
acaboudecriar,conformeaimagemabaixo:

youtube.com/linuxtips

LinuxTipsTrainingCenter

Porpadro,elecriaorepositriocomopblico.)

Caso voc queria visualizar o seu novo repo pela linha de comando bastante simples,
bastautilizarocomando"dockersearch"seguidodeseuusuriodoDockerHub:

#dockersearchlinuxtips

J que possumos a imagem no


registry do DockerHub, vamos testla fazendo o "
pull
" da
imagem e em seguida vamos executla para saber se realmente tudo isso funciona
simplesefcilassim.:)

Primeirovamospararoscontainersqueutilizamaimagem"
linuxtips/apache"
:

#dockerps|greplinuxtips/apache
#dockerstopCONTAINERID

youtube.com/linuxtips

LinuxTipsTrainingCenter

No possvel remover uma imagem se estiver algum container em execuo utilizandoa


comoimagembase.Porissonecessriopararoscontainerconformefizemosacima.

Para que voc possa remover uma imagem necessrio utilizar o comando "
docker rmi
",
responsvelporremoverimagensdodiscolocal.

Importante mencionar que, caso possua containers parados que a utilizam essa imagem
comobase,necessrioforararemoodaimagemutilizandooparmetro"
f
":

#dockerrmiflinuxtips/apache:1.0

Pronto!Removemosaimagem!

Agora vamos realizar o "


pull
" da imagem diretamente do
registry do DockerHub para que
tenhamos a imagem novamente em nosso disco local, e assim subir um container
utilizandoa.

#dockerpulllinuxtips/apache:1.0

Agora,podemosnovamentevisualizlaatravsdocomando"
dockerimages
".

#dockerimages

youtube.com/linuxtips

LinuxTipsTrainingCenter

Paracriarocontainer:

#dockerruntilinuxtips/apache:1.0/bin/bash

Simplescomovoar,no?

Noconfionainternet,possocriaromeuregistrylocal?

Muitas empresas no gostam de manter seus dados na nuvem em servios de terceiros.


Por isso existe a possibilidade de voc configurar um
registrylocal,assimvocnoprecisa
utilizar o
registry doDockerHub,porexemplo.Permitindoavoccompartilharsuasimagens
com outras pessoas de suas empresa, funcionando como o repositriodeimagensdocker.
Sensacional!

A
url do projeto fica em
https://github.com/docker/distribution
. O
DockerDistribution um
registry para que voc consiga guardar e compartilhar suas imagens. Ele substitui o
DockerRegistry
quesetornouobsoleto.

Para que possamos ter o


Distribution deforma simplesetotalmentefuncional, guardandoe
distribuindonossasimagensdockerlocalmente,bastarodlocomoumcontainer!:D

#dockerrundp5000:5000restart=alwaysnameregistryregistry:2

Com o comando acima, criamos um container chamado


registry que utiliza a imagem
registry:2 como base.Passamostambmqueaportadecomunicaocomocontainerser
a 5000 que tambm utilizar a porta 5000 do
host com o mesmo proposito. Vamos ver
sobreoparmetro"
p
"embrevenocapitulorelacionadoaredes.)
youtube.com/linuxtips

LinuxTipsTrainingCenter

Vamosverificaronossocontaineremexecuo:

#dockerps
#dockerimages

Muito bom, nosso


registry j est em execuo! Agora vamos testlo tentandorealizarum
"
push
"danossaimagemparaele.

Primeiramente, teremos que adicionar uma nova TAG baseada em nossa imagem,
mencionandooendereodonovoregistry:

#dockertagIMAGEMIDlocalhost:5000/apache
#dockerimages

Agorabastafazero"
push
"paraonosso
registry
localdaseguinteforma:

#dockerpushlocalhost:5000/apache

youtube.com/linuxtips

LinuxTipsTrainingCenter

Pronto!Agoranspossumosum
registry
local!
Evidente que dessa forma fizemos um
registry totalmente funcional, porm simples. Caso
queira utilizar outros recursos como controle de usurios, certificados, outras opes de
storage,
etc...
Visite
a
url:
https://github.com/docker/distribution/blob/master/docs/deploying.md
.

youtube.com/linuxtips

LinuxTipsTrainingCenter

Gerenciandoarededoscontainers

Quando o Dockerexecutado, elecriauma bridge virtualchamada


docker0paraque possagerenciar
acomunicaointernadocontainer,entreocontainereo
host
etambmentreoscontainers.

Vamos conhecer alguns parmetrosdo comando"


docker run
" que ironosajudaremrelao arede
ondeoscontainersirosecomunicar.

dns
=>indicaoservidorDNS

hostname
=>indicaumhostname

link
=>Criaumlinkentreoscontainers,semanecessidadedesesaberoipumdooutro.

net => Permiteconfigurarqual o modode rede que vocusar comocontainer.Temos04 opes,


porma mais conhecidae utilizadaa
"net=host"
.Onde ocontainer utilizararededo
hostparase
comunicareno"
containerizar
"arededocontainer.

expose
=>Expeaportadocontainerapenas

publish
=>Expeaportadocontaineredohost

defaultgateway
=>Determinaarotapadro

macaddress
=>Determinaummacaddress

Quandoocontaineriniciadotemosalgumasetapasreferentearedeatasuainicializaocompleta:

1Criaumpardeinterfacesvirtuais
2 Cria umainterface com nomenicocomo
veth1234 e emseguida"
linka"comabridgedoDocker,a

docker0

3Comisso,disponibilizadaainterfaceeth0dentrodocontaineremumnetworknamespacenico
4Configuraseo
macaddress
dainterfacevirtualdocontainer

5AlocaumIPna
eth0
docontainer.EsseIPtemquepertenceraorangedabridge
docker0

Com isso, o container j possui uma interface de rede e j est apto a se comunicar com outros
containersoucomohost.:D

youtube.com/linuxtips

LinuxTipsTrainingCenter

Consigofazercomqueaportadocontainerrespondanaporta
dohost?

Sim,issopossvelebastanteutilizado.

Vamos conhecer um pouco mais sobre isso em um exemplo utilizando aquela nossa imagem do

linuxtips/apache
.

Primeira coisaque temosque saber a portaondeoApache2 secomunica. Issofciln?Seestiver


com asconfiguraespadresdeportadeum
webserver
,oApache2docontainerestar respondendo
naporta
80/TCP
,correto?

Agora, vamos fazercomqueaporta 8080 donosso


hostrespondapelaporta80donossocontainer,ou

seja, sempre que algum bater na porta 8080 do nosso


host
,arequisio ser encaminhada para a
porta80docontainer,simplesn?

Para que eu consiga fazer esse encaminhamento, eu preciso utilizar o parmetro "
p
" do comando
"
dockerrun
"conformafaremosnoexemploaseguir:

#dockerruntip8080:80linuxtips/apache:1.0/bin/bash

youtube.com/linuxtips

LinuxTipsTrainingCenter

Reparequepassamosoparmetro"
p
"daseguinteforma:

p 8080:80 =>Onde o
8080 aportado
hostea
80ado
container
. Comissoestoudizendoquetoda

requisio que chegar na porta


8080 do meu
host dever ser encaminhada para a porta
80 do

container.

A partir do
host
, vamos realizar um
curl com destino ao IP do container na porta
80 e depois com
destinoaporta
8080
dohost,evamosanalisarassadas:

#curl172.17.0.34:80

youtube.com/linuxtips

LinuxTipsTrainingCenter

#curllocalhost:8080

Comopuderamvisualizar,asduassadastrouxeramapginadeboasvindasdoApache2.

Muitofcil,chegaaserlacrimejante!

youtube.com/linuxtips

LinuxTipsTrainingCenter

Ecomoelefazisso,mgica?

No, no mgica! Na verdade ele apenas utiliza um mdulo bastante antigo do kernel do Linux
chamadoNetfilter,quedisponibilizaaferramentaiptablesquetodosnsjcansamosdeusar.

Vamosdarumaolhadanasregrasdeiptablesreferenteaessenossocontainer:

#iptablesL

#iptablesLtnat

Comopodemosnotar,temosregrasde
NATconfiguradasquepermitemo
DNAT daporta
8080do
host
paraa
80
do
container
,vejaabaixo:

youtube.com/linuxtips

LinuxTipsTrainingCenter

SempreoDockerutiliza172.16.X.Xoupossoconfiguraroutra?

Sim, voc pode configurar outro range para serem utilizados pela bridge
docker0 e tambm pelas
interfacesdoscontainers.

Para que voc consiga configurar um range diferente para utilizao doDocker necessrio inicilo
comoparmetro"
bip
".

#dockerdbip192.168.0.1/24

Assim,voc estar informandoao Dockerquedesejautilizaro


IP192.168.0.1parasuabridge
docker0
e,consequentemente,paraa
subnet
doscontainers.

Voctambm poder utilizaroparmetro "


fixedcidr
" para restringiro range que o Docker irutilizar
paraabridge
docker0
eparaa
subnet
doscontainers.

#dockerdfixedcidr192.168.0.0/24

youtube.com/linuxtips

LinuxTipsTrainingCenter

ControlandooDaemondoDocker

Antesdetudo,vamostentarentenderoqueumdaemon.Emteoriadesistemasoperacionaisvemos
que,emsistemasoperacionaismultitask,isso,umsistemaoperacionalcapazdeexecutarmaisde
umatarefaporvez(notreally*),umdaemonumsoftwarequerodadeformaindependenteem
background,eleexecutacertasaespredefinidasemrespostaacertoseventos.Poisbem,odaemon
doDockerexatamenteisso,umaespciedeprocessopaiquecontrolatudo,containers,imagens,etc,
etc,etc.

AtoDocker1.7asconfiguraesreferentesespecificamenteaodaemonseconfundiambastantecom
configuraesglobais,issoporquequandovocdigitavalodockerhelpretornavaumaporradade
coisa,evocnosabiaoqueeraoque.Apartirdaverso1.8foiintroduzidoumnovocomando,o
dockerdaemon,queresolvedevezesseproblema,tratandoespecificamentedeconfiguraes
referente,obviamente,aodaemondodocker.

Comdockerdaemon:

youtube.com/linuxtips

LinuxTipsTrainingCenter

Semdockerdaemon:

*NarealoSOcontinuaprocessandoumataskporvez,masoprocessadoralternaentreprocessosto
rpidoquedaaimpressoenaprticapodemosassumirquequeeleestlidandocommaisde
umprocessoporvez.

OpesdeSockets
Socketssoendpointsondeduasoumaisaplicaesouprocessossecomunicamnumambiente,
geralmenteumIP:Portaouumarquivo,comonocasodounixdomainsockets.

AtualmenteoDockerconseguetrabalharcomtrstiposdesocket,unix,tcpefdepordefaulteleusa
unixsockets,vocdeveternotadoqueaostartarseudockerfoicriadoumarquivoem
/var/run/docker.sockeprafazeralteraesnessecaravocvaiprecisaroudepermissoderootoude
queousurioqueestexecutandoasaesestejanogrupodocker.
Pormaisprticoquesejaisso,existemalgumaslimitaes,comoporexemploodadaemonspoder
seracessadalocalmente.Praresolverissousamosgeralmenteotcp.Nessemodelonsdefinimosum
IP,quepodesertanto"qualquerum",a.k.a0.0.0.0eumaporta,ouumIPespecficoeumaporta.Nos
sistemasbaseadosemsystemdvocaindapodesebeneficiardosystemdsocketactivation,uma
tecnologiaquevisaeconomiaderecursos,elaconsistebasicamenteemativarumsocketsomente
enquantoumaconexonovachega,edesativarquandonoestsendomaisusado.

youtube.com/linuxtips

LinuxTipsTrainingCenter

Almdissotudo,dependendodoseuambiente,voctambmpodefazerodockerescutarem
diferentestiposdesockets,oqueconseguidoatravsdoparmetroHdocomandodockerdaemon.

Exemplos:

UnixDomainSocket

TCP

FD

youtube.com/linuxtips

LinuxTipsTrainingCenter

OpesdeStorage
Sendoocaraquecontrolatudo,naturalmentepossvelpassaropesquemudamaformacomoo
Dockersecomportanaformacomoeletrabalhacomstorages.Comofalamosanteriormente,no
capitulosobrestorage,oDockersuportaalgunsstoragedriver,todosbaseadosnoesquemadelayers.

Essasopessopassadasparaodaemonpeloparametrostorageopt,ondeitensrelacionadosao
devicemapperrecebemoprefixodm,ezfspara(advinha?)ozfs.Aseguireuvoudemonstraralgumas
opesmaiscomuns:

dm.thipooldeviceComessecaravocconsegueespecificarqualodeviceserusadopelodevice
mapperparacriarothinpoolqueeleusaparacriarossnapshotsusadosporcontainerseimagens.
Exemplo:

dm.basesizeEsseparametrodefineotamanhomximodocontainer.Ochatodissoquevoc
precisadeletartudodentrode/var/lib/docker(oqueimplicaemmatartodososcontainerseimagens)e
restartaroserviododocker.

dm.fsEspecificaofilesystemdocontainer,asopessuportadasso:ext4exfs

Opesderede
Tambmpossvelcontrolarcomoodaemonsecomportaremrelaoarede:

defaultgatewayAutoexplicativo,n?TodososcontainersreceberoesseIPcomogateway.

dnsTambmsemsegredo,oDNSqueserusadoparaconsultas.

dnssearchEspecificaodominioaserprocurado,assimvocconseguepesquisarmquinassem
usarofqdn.

ipforwardEssaopohabilitaoroteamentoentrecontainers,porpadroelajvemsetadacomo
true.

youtube.com/linuxtips

LinuxTipsTrainingCenter

Opesdiversas
defaultulimitPassandoissoprodaemontodososcontainersserostartadoscomessevalorparao
ulimit.Essaoposobrescritapeloparametroulimitdocomandodockerrun,quegeralmentevaidar
umvisomaisespecfica.

iccICCvemdeintercontainercomunication,porpadroelevemsetadocomotrue,casovocno
queiraessetipodecomunicaovocpodepassarnadaemoncomofalse.

loglevelpossvelalterartambmaformacomoodockertrabalhacomlog,emalgumassituaes
(geralmentetroubleshoot)vocpodeprecisardeumlogmaisverbose,porexemplo.

youtube.com/linuxtips

Вам также может понравиться