iniciando com docker

20
Iniciando com Viagem ao mundo dos containers! 1

Upload: marcelo-santos

Post on 09-Jan-2017

207 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Iniciando com docker

Iniciando com

Viagem ao mundo dos containers!1

Page 2: Iniciando com docker

Apresentação

● Graduado em Análise de Sistemas pela FATENE

● Programador de Sistemas de Informação Prefeitura de Fortaleza

[email protected]

https://br.linkedin.com/in/marcelo-santos-03528020

2

Page 3: Iniciando com docker

Docker● História

● Introdução

● Explorando

● Trabalhando com imagens

● Vamos de nginx

● Rede, link seus containers

3

Page 4: Iniciando com docker

História● Revolução da Virtualização

● Revolução dos Containers

● Já é realidade, os DevOps que o digam!

● Pretendo mostrar um preview inicial do poder do Docker e Container

4

Page 5: Iniciando com docker

Introdução● O que é?

● Container vs Máquina Virtual

● Namespaces

● Cgroups

● Union file systems

5

Page 6: Iniciando com docker

O que é Docker● Processo de desenvolvimento e deploy

○ O Servidor é um Navio Carregado de Containers e cada Container possui mercadorias

○ O Docker é a ferramenta para criar e manter esses containers, ou melhor, ele fica

responsável por armazenar vários serviços de forma isolada do SO Host, como: web server,

banco de dados, aplicação etc.

○ Seu back-end é baseado no LXC (Linux Containers), este isola processos do sistema

operacional host. Muito leve, pois não é preciso fazer emulação ou suporte a hardware.

Permite execução de sistemas linux de forma isolada, por isso o nome: Container. Utiliza o

mesmo Kernel do servidor Host, performático.6

Page 7: Iniciando com docker

Container vs Máquina Virtual● Bare Metal

○ O software de virtualização é instalado no hardware, como: Xen, VMWare e Hyper-V.

■ Maior isolamento e sobrecarga, cada VM executará seu próprio Kernel e SO.

● Hosted

○ O software de virtualização é executado sobre um SO, como o VirtualBox.

● O que o LXC oferece com os Containers é uma virtualização menos isolada,

compartilhando o kernel do host, reduz a sobrecarga.7

Page 8: Iniciando com docker

Containers vs VM

8

Page 9: Iniciando com docker

O que é Namespaces?● Docker faz uso deste recurso para prover um espaço de trabalho isolado

para os containers, cada instância de container criada possui um conjunto de

namespaces respectivamente. (Camada de isolamento para grupo de

processos)

○ pid – isolamento de processos (PID)○ net – controle de interfaces de rede○ ipc – controle dos recursos de IPC (InterProcess Communication)○ mnt – gestão de pontos de montagem○ uts – UTS (Unix Timesharing System) isolar recursos do kernel

9

Page 10: Iniciando com docker

Cgroups● Docker faz uso deste recurso para compartilhar recursos de hardware

existentes no host com os containers, podendo-se definir limites e restrições.

Union file systems● Sistema de arquivos que funcionam por meio de criação de camadas, sendo

bem leves e rápidos. Esse tipo de sistema de arquivos é utilizado pelo

Docker para construir as imagens utilizadas na criação de containers.

10

Page 11: Iniciando com docker

Explorando o Docker● Como baseia-se no LXC, o Docker funciona apenas no Linux, sendo

necessário ter uma máquina virtual com Linux, para funcionar em outros SO.

○ Instalação■ Ubuntu

● https://docs.docker.com/engine/installation/linux/ubuntulinux/

11

Page 12: Iniciando com docker

Hello World Docker● Como nosso primeiro teste, vamos apenas criar um container que roda um

comando bash.

● my-user$ docker run ubuntu /bin/echo Hello World, Docker!!!

12

● Entendendo o comando, o Docker vai baixar uma imagem base ubuntu,

instanciou um novo container, configurou a rede e IP para ele, em seguida

selecionou o sistema de arquivos para o container criado e executou o

comando /bin/echo, retornando o resultado do comando.

Page 13: Iniciando com docker

Comandos Docker● Podemos rodar um comando que mostra os detalhes sobre o docker

○ $ docker version

13

Page 14: Iniciando com docker

Comandos Docker● No comando abaixo o parâmentro -i indica que vamos usar interatividade

com o container e o -t faz o link ao terminal do container, ubuntu é a imagem que será utilizada e por fim o comando /bin/bash com argumento.

○ $ docker run -i -t ubuntu /bin/bash

14

O docker vai tentar localizar alguma imagem “ubuntu” localmente, caso não encontre fará o donwload do docker hub.

No caso para conferir executei um comando que mostra a distro que estou usando, veja que no container ele mostrou o Ubuntu 16.04

Page 15: Iniciando com docker

Comandos Docker● Mostrando os containers em execução

○ $ docker ps

15

Note que aqui eu usei o parâmetro -d quando executei container, com isso o container vai rodar em background caso saia do mo

● Acessando o terminal de um container que está em background pelo nome do container

○ $ docker exec -it reverent_lovelace bash$ docker ps -a mostra todos os containers$ docker stats ID ou NAME detalhes de recursos$ docker logs mostra-nos output do container$ docker stop ID ou NAME termina a execução de um container$ docker rm ID or NAME remove um container

Page 16: Iniciando com docker

Trabalhando com imagens Docker● Quando criamos nosso container citei que o docker baixou uma imagem do

ubuntu visto que ela não existia localmente, podemos listar com o comando:○ $ docker images

16

Page 17: Iniciando com docker

Vamos de nginx● Veremos um pouco mais sobre containers, algumas opções de controle,

vamos criar nosso novo container○ $ docker run -it --name vamos_de_nginx ubuntu

17

Usamos o parâmetro --name para especificar o nome do container

● Atualizando repositórios e instalando o nginx○ $ apt-get update○ $ apt-get install -y nginx○ $ nginx -v

Dando tudo certo veremos a versão do nginx instalado

Page 18: Iniciando com docker

Commit com nova imagem nginx● O que fazemos nos containers duram apenas no ciclo de vida do container,

ou seja, se pararmos e iniciarmos novamente o container, o que fizemos não terá efeito, a menos que façamos um commit, o Docker possui um recurso de versionamento semelhante ao Git, ao realizarmos um commit, salvamos o estado atual do container na imagem utilizada.

○ $ docker commit vamos_de_nginx ubuntu/nginx

18

Page 19: Iniciando com docker

Criando container temporário● Podemos criar um container que seja removido automáticamente ao término

de sua execução, para isso usaremos a opção --rm ○ $ docker run -it --rm -p 8080:80 ubuntu/nginx /bin/bash

19

Com a opção -p informamos ao Docker que a porta 8080 do host será mapeada para a 80 do container. Iniciando o serviço do nginx$ service nginx start

Como estou rodando no Mac OS, acessei pelo IP que o Docker me fornece, se você estiver no linux o localhost roda de boa!

Page 20: Iniciando com docker

Obrigado à todos!

20

● Referências○ https://www.docker.com/○ https://docs.docker.com/○ https://linuxcontainers.org/○ https://www.nginx.com/