Docker

26
EQUIPE: Benicio, Aluisio e Matheu

Transcript of Docker

Page 1: Docker

EQUIPE: Benicio, Aluisio e Matheus

Page 2: Docker

O que é?É uma plataforma aberta para desenvolvedores e administradores de sistemas para construir, entregar e rodar aplicações distribuidas

Page 3: Docker

O que é?Docker não é uma ferramenta de virtualização de máquinas, ele é um ambiente de virtualização de Linux, construído sobre os LinuX Containers (LxC), que utiliza a funcionalidade cgroups para criar e rodar ambientes Linux virtuais isolados em um único host.

Page 4: Docker

Composto:* Docker Engine * Docker Hub

Docker Engine que é uma leve ferramenta de execução e empacotamento.

Page 5: Docker

Composto:Docker Hub, um serviço em nuvem responsável pelo compartilhamento de aplicações e automação de fluxos de trabalho. (Imagens)

Page 6: Docker

Dilema do DockerO Docker permite que as aplicações sejam rapidamente montadas e elimina o atrito e a diferença entre os ambientes de desenvolvimento, testes e produção, ou seja, sem essa de

“Na minha máquina funciona”

“Mas eu testei!!!”“Estranho? Parou de funcionar do nada”!“Será que vai dar problema se eu alterar isso?”

Page 7: Docker

O que são Containers?Nada mais é que um chroot. Nele é possível definir recursos como memória, rede, sistema operacional, aplicação, serviço e etc. Em um Container Docker é possível fazer testes, desenvolvimentos, estudos, etc. Além disso, também é possível utilizá-lo em um ambiente de produção.

Page 8: Docker

Porque usar Containers?Velocidade;

Boot em questão de segundos;

Economia de recursos;

Os processos rodando dentro de um container são vistos como um processo no sistema Host;

É possível subir vários containers ao mesmo tempo, consumindo o minimo de recursos do hardware físico ou virtual.

Page 9: Docker

Containers x Máquinas Vituais

Page 10: Docker

O que é uma imagem?Uma imagem é um template para rodar um container. Uma imagem é dividida em várias camadas de acordo com a execução de comandos durante seu build.Essas imagens podem ficar armazenadas noDockerHub, que é repositório público e privado que disponibiliza diversos recursos como sistema de autenticação, build de imagens automático, entre outros.

Page 11: Docker

Mas as imagens do DockerHub são confiáveis?

Caso não confie em uma imagem baixada do DockerHub, basta executar o comando "docker inspect (nome da imagem)" para listar todas as informações contidas naquela imagem.

Page 12: Docker

E as camadas?Para visualizar as camadas, utilizamos o comando "docker history (nome da imagem)"Saída do comando:IMAGE CREATED CREATED BY SIZE COMMENT9f587567bce1 33 hours ago /bin/sh -c #(nop) ENTRYPOINT ["/usr/sbin/htt 0 B 240465ca487d 33 hours ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B 94643bf2f8a9 33 hours ago /bin/sh -c #(nop) LABEL Description=Apache S 0 B 4687cdc38101 34 hours ago /bin/sh -c yum update -y && yum install httpd 98.19 MB dd1c6ab5681f 34 hours ago /bin/sh -c #(nop) MAINTAINER Matheus Alves e 0 B cf2c3ece5e41 12 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B <missing> 12 weeks ago /bin/sh -c #(nop) LABEL name=CentOS Base Imag 0 B <missing> 12 weeks ago /bin/sh -c #(nop) ADD file:f0ec297ab653ffb2c5 194.6 MB <missing> 12 weeks ago /bin/sh -c #(nop) MAINTAINER https://github.c 0 B

Page 13: Docker

O que é um DockerfileO Dockerfile é um arquivo onde são determinados todos os detalhes de uma imagem. Nele são especificados a imagemque vai ser utilizada, aplicativos que serão instalados, comandos

a serem executados, etc. Ele se assemelha ao makefile utilizado

para compilação de programas em C, por exemplo, mas para criação

de imagens.

Page 14: Docker

Exemplo de DockerfileFROM centos:6MAINTAINER Matheus Alves [email protected]

RUN yum update -y && yum install httpd -y && yum clean all

ENV NO_PROXY="localhost"LABEL Description="Apache Server"VOLUME /var/www/html/EXPOSE 80ENTRYPOINT ["/usr/sbin/httpd","-D","FOREGROUND"]

Page 15: Docker

Comandos UtilizadosFROM => Indica a imagem que vai ser utilizada como base.MAINTAINER => Autor da imagem.RUN => Executa comandos durante a criação da imagem.ENV => Define variáveis de ambiente.LABEL => Adiciona metadados à imagem.VOLUME => Define um volume a ser montado no container.EXPOSE => Informa portas nas quais o container vai ficar

ouvindo.ENTRYPOINT => Permite rodar um executável. O container será

finalizado após o término da execução do mesmo.

Page 16: Docker

Outros ComandosADD => Copia arquivos, diretórios, arquivos TAR ou outros

arquivos remotos e os adicionam ao filesystem do container.CMD => Executa um comando no inicio da execução do

container.COPY => Copia novos arquivos e diretórios e os adicionam ao

filesystem do container.USER => Determina qual o usuário será utilizado na imagem.WORKDIR => Altera o diretorio / para o especificado.

Page 17: Docker

Executando o build do DockerfilePara executar o build de um Dockerfile como esse do exemplo, basta usar o comando "docker build -t apache:1.0 .", caso esteja no

mesmo diretório do Dockerfile, ou substituir o ponto pelo caminho do

diretório em que o Dockerfile se localiza. Após a execução do build

estará disponível uma imagem com a tag especificada para a utilização

em novos containers.

Page 18: Docker

Instalaçãohttps://www.docker.com/

Page 19: Docker

Plataformas suportadas

Page 20: Docker

Instalação Windows

▪RequisitosWindows 10 Pro 64 bits

Enterprise and Education (1511 November update, Build 10586 or later)

Microsoft Hyper-V

Page 21: Docker

Instalação Windows

1 - Instalar o arquivo InstallDocker.msi2 - E Inciar o Docker For Windows

Configuração

Page 22: Docker

Testando a instalação

Page 23: Docker

Escolha seu terminal favorito!1 – Prompt

2 - Power shell

3 - Cheque a versão ‘docker --version’

Page 24: Docker

Criando um container Ubuntu

Page 25: Docker

Exemplo prático

1 - Baixar um container Ubuntu2 - Instalar um servidor Web (Nginx)3 - Salvar este container com o servidor instalado4 - Iniciar um novo container a partir dessa imagem5 - Acessar uma página web deste serviço.

Page 26: Docker

Comandos do Exemplo1 - docker run -i -t ubuntu /bin/bash2 - apt-get update && apt-get install -y nginx3 - /etc/init.d/ngninx start4 - docker commit <id> testefa7/ubuntu:version15 - docker images6 - docker run -i -t -p 8080:80 testefa7/ubuntu:version1 /bin/bash7 - docker attach id