View
319
Download
0
Category
Preview:
Citation preview
O que é Docker?
Consultor/DesenvolvedorPalestranteGerador de conteúdogente fina
EU
"Containers docker embrulham parte de um software emum filesystem completo que contem tudo que ele precisapara rodar: código, ferramentas de sistemas, bibliotecas -tudo você pode instalar em um servidor. Isso garante que sempre vai rodar a mesma coisa independente do ambiente."
Tradução livre da descrição oficial aqui.
e?????
Como o linux administra os processos● Cada processo possui um PID
○ PID = Process Identifier○ Identificador do processo
● Processos possuem também um atributo chamado PPID○ PPID = Parent Process Identifier○ Identifica o PID do processo que pediu ao Kernel para criar o
processo.
● UIDs e GIDS○ UIDS = User Identification○ GIDS = Group Identification○ São usados para fazer a permissão dos usuários.
OCHROOT● O comanado CHROOT do SO Unix é uma operação que muda o
diretório root do processo corrente e de seus processos filhos.
● Processos que tem o root alterado não podem acessar arquivos fora daquele contexto.
CHROOT e bind mounts● Um processo pode ter acesso a diretórios específicos,
podendo ter permissão de Read-Only (somente leitura).● Podem acessar diretórios como /dev ou /sys por exemplo.
Linux Containers (LXC)● O Kernel Linux possui Cgroups
○ Cgroups conseguem isolar o uso de recursos como CPU, Memória, Rede e etc.
○ Os grupos de processos são separados por um isolamento de namespace.
virtualizações● Bare Metal
○ O software que administra a virtualização opera diretamente sobre o hardware como o Xen e VMware.
○ Proporciona um maior isolamento mas tem um alto custo pois cada maquina ira ter seu próprio Kernel e SO
● Hosted○ É o caso do VirtualBox que roda em cima de um SO mas igual ao Bare
Metal irão iniciar um ambiente com Kernel e SO próprios.● LXC
○ Basicamente é uma virtualização em nível de SO.○ Conseguem rodar sistemas Linux isolados.○ Compartilham dos recursos do host de controle.
E O DOCKER?
Docker● O docker usava LXC.● O simbolo de uma baleia levando containers simboliza a
maquina host levando vários serviços.● O docker tem a missão de facilitar e agilizar o
desenvolvimento de aplicações.● Containers devem ter somente uma responsabilidade.
MAquinas virtuais vs Docker
Termos comuns● Build● Imagem● Container● Porta● Link● Volume● Registry
Docker buildBuild é o processo de construção de uma imagem a partir de um arquivo chamado Dockerfile que contem instruções.
O Dockerfile é lido de cima para baixo é seus passos são cacheados para futuros builds.
Dockerfile
Imagens dockerImagens docker são arquivos imutáveis que possuem uma lista de camadas semelhante a um repositório git, elas podem ser atualizadas e versionadas e servem como base para criar um container.
● Imagens oficiais○ Nome e versão
■ Ubuntu:14.04
● Imagens não oficiais○ Usuario, nome e versão
■ waldemarnt/ubuntu:14.04
Docker containersContainers são binários iniciados a partir de uma imagem(somente de uma). Eles irão executar o que foi descrito no build. Containers são descartáveis e não devem ser usados por muito tempo.
Docker portsContainers que executam aplicações por exemplo precisam expor algumas portas na rede para que possam ser acessados.
Quando se inicia um container a partir de uma imagem é possível dizer qual porta sera.
Docker linksComo containers devem ter somente uma responsabilidade quase sempre será necessário depender de outros containers com outras responsabilidades. Com o link é possível fazer com que eles se encontrem na rede.
Docker volumesContainers precisam salvar dados, sincronizar dados externos e outros tipos de operações. Os volumes são escritos no file-system. Volumes do tipo data não são deletados quando o container é removido.
Docker registryImages docker podem ser versionadas e commitadas, são formadas em forma de camadas incrementais. O docker registry é o repositório oficial do docker na web onde é possível hospedar imagens e usar imagens publicas e privadas.
Workflow de desenvolvimento
Criando um Dockerfile
construindo um dockerfile
listando imagens
Iniciando um container
listando containers ativos
Parando e iniciando o mesmo container
Executando comandos no containerSem entrar no container
Entrando no container em modo interavito
Recommended