devops on beer rj - ambientes virtuais (alex marmute e pedro corrêa)

41
Pedro Corrêa Alex Marmut e

Upload: concrete-solutions

Post on 09-Jan-2017

208 views

Category:

Technology


0 download

TRANSCRIPT

Pedro Corrêa

Alex Marmute

VirtualizaçãoAlex Marmute

Virtualização em cloud

O que é?

Virtualização

Tecnologias de virtualização

- VMware- Xen- KVM (Kernel-based Virtual Machine)- Hyper-V

Cloud e Virtualização

Soluções AWS- Instâncias EC2- Amazon Workspaces- VMware on AWS

EC2 (Elastic Compute Cloud)O EC2 permite a implantação de aplicações escaláveis ao prover um Web service através do qual um usuário pode iniciar uma AMI (Amazon Machine Image) para criar uma máquina virtual, chamada de instância, contendo qualquer software desejado.

LAB

WorkspacesDaaS (Desktop as a Service)

LAB

VMware + AWS

VMware + AWS

Um pouco sobre virtualização aninhada (Nested Virtualization)Virtualização Tradicional X Virtualização Aninhada

Um pouco sobre virtualização aninhada (Nested Virtualization)Virtualização Aninhada em Cloud

DOCKER - basicãoPedro Corrêa

Who am I (not) ?

Disclaimer: Copiei os slides dele >>>

Gilvan Silva● SysAdmin● DevOps● Mineiro

Contato: [email protected]

WTF is a Docker?

“Docker é uma plataforma aberta para desenvolvimento, entrega e execução de aplicações utilizando

containers.”

Docker vs ND (not-docker)

Docker não é um sistema de virtualização tradicional. Enquanto em um ambiente de virtualização tradicional nós temos um S.O. completo e isolado, dentro do Docker nós temos recursos isolados que utilizando bibliotecas de kernel em comum (entre host e container)

Ou seja, VMs tradicionais possuem um custo da máquina host muito maior que containers.

Entendendo a diferença Container x ImagemTodo container é iniciado a partir de uma imagem, dessa forma podemos concluir que nunca teremos uma imagem em execução.

Um container só pode ser iniciado a partir de uma única imagem, ou seja, caso deseje um comportamento diferente será necessário customizar a imagem.

Componentes Docker Docker implementa a arquitetura client/server:

Docker Engine (server):Daemon que usa features doKernel Linux (namespaces, cgroups)para isolar e virtualizar recursos (pid, net, mnt, ipc, uts, user)

Docker Client (client):Recebe os inputs e envia para o Engine.

Componentes Docker Completando a arquitetura o Docker Registry é a “loja” para as imagens Docker, onde imagens públicas são armazenadas e também é possível guardar imagens customizadas (Docker Hub)

Instalando Docker

dika em comic sans:

Se não forem instalar no OSX, instale usando os binarios...

Comandos para ContainersListando containers:$ docker ps

Removendo um ou mais containers:$ docker rm <id/name>

Buscando logs de um container:$ docker logs <id/name>

Buscando informações low-level de imagens e containers: $ docker inspect <id/name>

Comandos para ImagensListando imagens:$ docker images

Removendo uma ou mais imagens:$ docker rmi <id/name>

“Buildando” imagens customizada de um container:$ docker build <Dockerfile path>

Apresentando dados de consumo do container:$ docker stats <id/name>

Cansei de Slide

Criando imagens com Dockerfile

FROM docker/whalesay:latestRUN apt-get -y update && apt-get install -y fortunes

CMD /usr/games/fortune -a | cowsay

Gerando a imagem$ docker build -t docker-whale .

Saída:

Sending build context to Docker daemon XXX.X MB......Removing intermediate container a8e6faa88df3Successfully built 7d9495d03763

Criando imagens com Dockerfile

FROM docker/whalesay:latestRUN apt-get -y update && apt-get install -y fortunes

ENTRYPOINT ["cowsay"]

Rodando um ContainerTenta ai, mas não funciona não:

$ docker run busybox

Morreu né? Tenta esse:

$ docker run busybox tail -f /dev/null

Docker foi pensado para rodar apenas um programa por vez.

Depois que ele roda um container o mesmo deixa de existir

Formas de ExecuçãoInterativoInteractive (interativo) é uma opção para executar interagindo com o container:

$ docker run -it <image>

-i = interativo-t = tty (terminal)

$ docker exec -it <container_name> bash

Tá e dai? Que eu faço com isso?Com essa gambiarra você essencialmente tem uma maquina virtual rodando e fazendo nada. Pra acessar rode o seguinte:

$ docker exec -it <NICK DO CONTAINER> sh

Agora voce esta rodando um shell interativo dentro desse container.

MACETE!

FROM docker/whalesay:latestRUN apt-get -y update && apt-get install -y fortunes

TIRA ISSO > CMD /usr/games/fortune -a | cowsay

COLOCA ISSO > CMD tail -f /dev/null

Aew, voltou slides

Dados - Persistência de dadosUm volume pode ser apenas o mapeamento de diretório entre o host e container, bem como o mapeamento de uma pasta entre containers. Nos volumes, fazemos a persistência dos dados usados em um container.Para mapear o volume do container e um diretório local no host usamos a opção -v.

$docker run --name dbserver -v \ /home/data:/var/lib/postgresql/data postgres

Docker Composeversion: '2'services: web: image: nginx ports: - "80:80" volumes: - .:/code

Docker Composeversion: '2'services: django: build: context: ./django args: DOCKER_DEV: 'True' container_name: backstage_django command: ["/worldstudy/backstage/docker/django/container_start.sh"] volumes: - /worldstudy - ../:/worldstudy/backstage - ~/.ssh:/root/.ssh ports: - 8000:8000 environment: - LOCAL_DOMAIN=http://0.0.0.0:8000 - DJANGO_SETTINGS_MODULE=worldstudy.settings

links: - mysql - redis

Finalmente acabou

Poxa acabou

www.concretesolutions.com.brblog.concretesolutions.com.br

Rio de Janeiro – Rua São José, 90 – cj. 2121Centro – (21) 2240-2030

São Paulo - Rua Sansão Alves dos Santos, 433 4º andar - Brooklin - (11) 4119-0449