Introdução ao docker

Preview:

Citation preview

EQUIPE: Benicio, Aluisio e Matheus

O que é?

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

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.

Composto:

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

Composto:

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

Dilema do Docker

O 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?”

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.

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.

Containers x Máquinas Vituais

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 no

DockerHub, que é repositório público e privado que disponibiliza diversos recursos como sistema de autenticação, build de imagens automático, entre outros.

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.

E as camadas? Para visualizar as camadas, utilizamos o comando "docker history (nome da imagem)"

Saída do comando:

IMAGE CREATED CREATED BY SIZE COMMENT

9f587567bce1 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

O que é um Dockerfile

O Dockerfile é um arquivo onde são determinados todos os

detalhes de uma imagem. Nele são especificados a imagem

que 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.

Exemplo de Dockerfile

FROM centos:6

MAINTAINER Matheus Alves emmanoelcoelholima@gmail.com

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

ENV NO_PROXY="localhost"

LABEL Description="Apache Server"

VOLUME /var/www/html/

EXPOSE 80

ENTRYPOINT ["/usr/sbin/httpd","-D","FOREGROUND"]

Comandos Utilizados

FROM => 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.

Outros Comandos

ADD => 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.

Executando o build do Dockerfile

Para 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.

Instalação

https://www.docker.com/

Plataformas suportadas

Instalação Windows Requisitos

Windows 10 Pro 64 bits

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

Microsoft Hyper-V

Instalação Windows

1 - Instalar o arquivo InstallDocker.msi

2 - E Inciar o Docker For Windows

Configuração

Testando a instalação

Escolha seu terminal favorito!

1 – Prompt

2 - Power shell

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

Criando um container Ubuntu

Exemplo prático

1 - Baixar um container Ubuntu

2 - Instalar um servidor Web (Nginx)

3 - Salvar este container com o servidor instalado

4 - Iniciar um novo container a partir dessa imagem

5 - Acessar uma página web deste serviço.

Comandos do Exemplo

1 - docker run -i -t ubuntu /bin/bash

2 - apt-get update && apt-get install -y nginx

3 - /etc/init.d/ngninx start

4 - docker commit <id> testefa7/ubuntu:version1

5 - docker images

6 - docker run -i -t -p 8080:80 testefa7/ubuntu:version1 /bin/bash

7 - docker attach id