CONTAINERS Prof Marcelo de Oliveira Rosa Containers Anteriormente
- Slides: 107
CONTAINERS Prof. Marcelo de Oliveira Rosa
Containers Anteriormente, � VMs SO – emulação de máquinas convidado e suas aplicações estão ISOLADAS Qual o custo? A máquina anfitriã (host) reserva recursos computacionais (memória e área de armazenamento) CPU é compartilhada Alternativa “leve” Containers
Containers Baseado em cgroups/namespaces do Linux � Ou virtualização no nível do SO � Partição dos recursos do kernel Recursos são atribuídos a namespaces Processos são associados a namespaces Processos do namespace A só podem usar recursos desse namespace. � Permitem a implementação de containers!
Containers Baseado em cgroups/namespaces do Linux � 7 tipos existentes e elementos isolados IPC Fila de mensagens , semáforos, memória compartilhada Network Dispositivos de rede, portas PID ID de processos (para fork() e clone()) Users ID de usuários e de grupos
Containers Baseado em cgroups/namespaces do Linux � 7 tipos existentes e elementos isolados UTS Nome de anfitrião (hostname) Nome de domínio (domain name) Mount Estruturas de “diretório” (mount points) Cgroup Estruturas de gerência de recursos do sistema Percentual da CPU Quantidade de memória
Containers Baseado em cgroups/namespaces do Linux � Permite isolamento de processos por namespace Quantidade � Essas de recursos fixada por namespace características não nos lembram VM?
Containers Baseado em cgroups/namespaces do Linux � Permite isolamento de processos por namespace Quantidade � Essas de recursos fixada por namespace características não nos lembram VM? Mais leve que VM Não tão isolada quanto VM
Containers Baseado em cgroups/namespaces do Linux � Permite isolamento de processos por namespace Quantidade � Essas de recursos fixada por namespace características não nos lembram VM? Mais leve que VM Não tão isolada quanto VM � Base para software compartimentarizado “Containers”!
Containers Baseado em cgroups/namespaces do Linux � Permite isolamento de processos por namespace Quantidade App 1 de recursos fixada por namespace App 2 App 3 App 4 Gerenciador de Containers SO Host HW App 5
Containers Além do isolamento, os containers. . . � Os executáveis, bibliotecas e dependências são empacotadas em imagens O ambiente de execução está sempre pronto � Podem ser executados anywhere Na mesma máquina Na mesma nuvem Parece JAVA, não é?
Containers Além do isolamento, os containers. . . � Desenvolvimento de aplicação multiplataforma Primeira versão: WINDOWS Re-implementação: MACOS Re-implementação: LINUX � Com containers Apenas uma versão Lembre-se: muito provavelmente, 1ª versão para LINUX
Containers Aproveitando. . . � Definições preliminares Imagem Unidade de software contendo executáveis, arquivos de configuração, bibliotecas e qualquer dependência exigida para sua correta execução Inclusive outras imagens Container Instância de uma imagem em execução
Containers Aproveitando. . . � Para facilitar o entendimento Imagem arquivo Container processo
Containers Implementações � LXC/LXD Linux Containers https: //linuxcontainers. org/ � Docker https: //www. docker. com/ Trabalharemos com este!
Containers Docker � Desenvolvido Distribuição pela empresa Docker Inc. “gratuita” de ferramentas Fatura com serviços!
Containers Docker � Composto de: Containerd (no núcleo do Docker Engine) Daemon open-source para gestão das imagens e containers Build. Kit CLI Ferramentas para encapsular/montar os as imagens (parte do Docker Engine) Interface de comandos para executar a gestão Docker Hub Repositório controlado de imagens! Um dos pontos de faturamento ($$$) da Docker Inc.
Containers Docker � Teste de instalação Checar a versão do engine docker --version Executando O um container a partir de uma imagem docker run hello-world que aconteceu?
Containers Docker � Teste de instalação Executando O um container a partir de uma imagem docker run hello-word que aconteceu? Daemon procura pela imagem “hello-world” Não encontramos, recupera sua versão mais recente Docker Hub A partir dessa imagem, cria uma instância, o container Executa essa instância/container!
Containers Docker � Teste de instalação Execute O duas ou três vezes o mesmo comando docker run hello-word que aconteceu? Duas ou três instâncias foram criadas
Containers Docker � Quantas docker image ls docker container ls --all docker ps --all � Dúvidas sobre os comandos Adicione --help � Sintaxe imagens ou containers existem? dos comandos no Docker CLI docker comando subcomando parametros
Containers Docker � Gestão de imagens e containers docker images Outro modo de listar as imagens disponíveis No seu sistema! docker system info docker info Estado atual do engine Docker docker system df -v Checagem do estado do disco
Containers Docker � Gestão de imagens e containers (limpeza) docker image rm <imagem 1> <imagem 2> docker rm <imagem 1> <imagem 2> Elimina imagens específicas docker image prune Elimina imagens não usadas ou “pendentes” docker container rm <container> Elimina containers específicos docker container prune Elimina containers que estejam PARADOS
Containers Docker � Gestão de imagens e containers (limpeza) docker system prune --all Limpeza total do sistema (imagens e containers) Equivalentes: del *. * ou rm -rf / (linux) Usem antes de desinstalar o ambiente Docker!
Containers Docker � Lidando com repositórios Imagens são armazenadas no repositório Docker Hub Contas podem ser pessoais, de empresas, de projetos. . . Para baixar (pull) pull imagens, não é necessário ter conta! Para carregar (push) push imagens, você precisa! Conta gratuita com limitações 1 (um) repositório privado! Conta paga ($$$) 5 (cinco) repositórios privados por US$ 7/mês Fonte de renda para Docker Inc.
Containers Docker � Baixando e examinando imagens docker pull drmarcelorosa/my-hello-world docker images docker inspect drmarcelorosa/my-hello-world Abra a página: https: //hub. docker. com/repository/docker/drmarcelor osa/my-hello-world Compare variáveis Id e Repo. Digests O que elas significam?
Containers Docker � Estabelecendo Antigo um servidor Maria. DB My. SQL docker pull mariadb Servidor preparado pela comunidade. . . Há outros! docker run --name my-db -e MYSQL_ROOT_PASSWORD=senha -d mariadb Ligando o servidor O que aconteceu aqui? Que parâmetros são esses?
Containers Docker � Estabelecendo Antigo um servidor Maria. DB My. SQL docker run --name my-db --e MYSQL_ROOT_PASSWORD=senha -d mariadb Atribuindo um nome para o container § Para facilitar sua identificação Definindo uma variável de ambiente § Que o servidor mariadb reconhece (senha do adm) Deixe-o rodando em background (como um daemon) docker inspect mariadb docker inspect my-db
Containers Docker � Estabelecendo Antigo um servidor Maria. DB My. SQL docker run -it --network bridge --rm mariadb mysql -h 172. 17. 0. 2 –uroot -p Faça isso em outra janela Cria um cliente (para comandos SQL) Usando uma rede específica do container § Lembre-se: o container é um “computador” dentro do seu Elimina o container quando finalizar seu uso Em azul: comando e parâmetros para mariadb/mysql! exit
Containers Docker � Estabelecendo Antigo um servidor Maria. DB My. SQL Alguns comandos SQL para nosso deleite! CREATE DATABASE CID; CREATE TABLE CID. ALUNOS (ID INT, NOME VARCHAR(255), NOTA INT); INSERT INTO CID. ALUNOS(ID, NOME, NOTA) VALUES (1, 'Marcelo Rosa', 10), (2, 'Joao da Silva', 5); SELECT * FROM CID. ALUNOS WHERE NOTA > 6; EXIT
Containers Docker � Estabelecendo Desligando um servidor Maria. DB e religando um container Container é uma instância (algo “vivo”) de uma imagem Imagine desligar um servidor que esteja acessando disco docker stop my-db docker start my-db docker run -it --network bridge --rm mariadb mysql -h 172. 17. 0. 2 –uroot -p USE CID; SELECT * FROM ALUNOS; EXIT
Containers Docker � Estabelecendo Qual um servidor Maria. DB a diferença entre start, exec e run? start: inicia um container existente que esteja “parado” docker stop my-db docker start my-db docker inspect my-db exec: executa um comando dentro de um container “rodando” Logo veremos um exemplo run: Cria uma instância de uma imagem e a “executa” Chamada interna start
Containers Docker � Estabelecendo Ligando um servidor Apache o servidor docker run -dit --name my-web -p 8080: 80 httpd: 2. 4 Um container com nome my-web Executado em background Mapeando a porta 80 do container para a porta 8080 que hospeda o Docker Engine. docker-machine ip Identificando o endereço IP desse servidor Se não fosse Docker Toolbox, seria localhost
Containers Docker � Estabelecendo um servidor Apache Testando Abra um navegador para acessar o seguinte endereço http: //192. 168. 99. 100: 8080 Endereço IP pode variar Encerrando o servidor docker stop my-web docker rm my-web
Containers Docker � Estabelecendo um servidor Apache Como colocar mais páginas no servidor Um jeito: mapeamento de diretórios Um diretório no host será mapeado em um diretório no container! container Crie o diretório C: Users<login>dockerhtml-pages <login>
Containers Docker � Estabelecendo um servidor Apache A configuração do apache (httpd. conf) usa o diretório /usr/local/apache 2/htdocs/ para manter páginas. Inicie o servidor com docker run -dit --name my-web -p 8080: 80 –v /c/Users/<login>/docker/html-pages/: <login> /usr/local/apache 2/htdocs/ httpd: 2. 4 Copie uma página html qq no diretório do host
Containers Docker � Estabelecendo Abra um servidor Apache o navegador e. . . Voilá! http: //192. 168. 99. 100: 8080 Endereço provido pelo Virtual. Box § Docker engine é sustentado por VM Esse container agora enxerga páginas desse diretório Mais de um container pode enxergar o mesmo diretório
Containers Docker � Checando containers em execução docker ps -a docker stats docker logs --details my-web Captura tudo que é enviado para STDOUT e STDERR docker diff <container> Identificar nossas modificações no camada/layer de escrita
Containers Docker � Criando uma imagem Imagens A por camadas Imagine “herança” em programação orientada a objetos Ou camada OSI de redes primeira camada chama-se SCRATCH Não faz nada, do ponto de vista do usuário! Próximas camadas adicionam novas informações Arquivos e diretórios Variáveis de ambiente
Containers Docker � Criando uma imagem Imagens A por camadas Imagine “herança” em programação orientada a objetos Ou camada OSI de redes primeira camada chama-se SCRATCH Não faz nada, do ponto de vista do usuário! Próximas camadas adicionam novas informações Arquivos e diretórios Variáveis de ambiente Por economia, salvasse apenas a diferença entre camadas! DIFF e GIT
Containers Docker � Criando uma imagem Importante Cada camada de uma imagem é READ-ONLY Quando um container é gerado, uma nova camada é criada Essa camada é READ-WRITE Pode, posteriormente, tornar-se uma READ-ONLY § Caso específico – geração de nova imagem
Containers Docker � Criando uma imagem Exemplo: Word. Press Gerenciador e servidor de páginas HTML O Docker cria o seguinte container READ-WRITE DADOS CONTAINER WORDPRESS HTTPD UBUNTU Imagem do Word. Press (há subdivisões) SCRATCH READ-ONLY
Containers Docker � Criando uma imagem Exemplo: Word. Press Gerenciador e servidor de páginas HTML O Docker cria o seguinte container docker pull wordpress: php 7. 3 -apache docker pull php: 7. 3 -apache Em hub. docker. com, procure pelas imagens wordpress: php 7. 3 -apache php: 7. 3 -apache
Containers Docker � Criando uma imagem Exemplo: Word. Press Em hub. docker. com, procure pelas imagens https: //hub. docker. com/layers/amd 64/php/ 7. 3 -apache/images/sha 256 fbc 91483333 b 1 f 54 b 5 de 0 ee 8090 ffbd 1 b 60827 ec 37546 e 4 ca 713 fab 0 a 12 ca 62 b? context=explore https: //hub. docker. com/layers/wordpress/ library/wordpress/php 7. 3 apache/images/sha 2562 c 98 af 2 aa 1 ae 81343278 b 1 d 62618 e 05 bfa 5 d 3 fe 5 8 a 487000 d 4 e 94 fa 338 bea 780? context=explore
Containers Docker � Criando uma imagem Exemplo: Word. Press No ambiente docker inspect wordpress: php 7. 3 -apache docker inspect php: 7. 3 -apache
Containers Docker � Criando Nosso uma imagem “Hello-World” Crie os diretórios C: Users<login>dockerhello-world-code <login> § Conterá nosso código-fonte C: Users<login>dockerhello-world<login> codemy-build § Para gerar a imagem Precisamos gerar um arquivo binário executável Imprimirá uma mensagem na tela Usando linguagem C + printf()
Containers Docker � Criando Nosso uma imagem “Hello-World” No LINUX Colocar código executável no diretório C: Users<login>dockerhello-world<login> codemy-build No Windows Usar container para compilar o código!
Containers Docker � Criando Nosso uma imagem “Hello-World” Salve o seguinte código-fonte com o seguinte nome: C: Users<login>dockerhello-world<login> codehello. c #include <stdio. h> int main(void) { printf("Hello world da turman"); return 0; }
Containers Docker � Criando Nosso uma imagem “Hello-World” Compilando o código num container Linux (alternativa 1) 1 docker run --rm -it -v /c/Users/<login>/docker/hello-world/<login> code/: /build ubuntu apt-get –y update apt-get –y install build-essential cd /build gcc –o my-build/hello –static hello. c exit
Containers Docker � Criando Nosso uma imagem “Hello-World” Compilando o código num container Linux (alternativa 2) 2 docker run --rm -it -v /c/Users/<login>/docker/hello-world/<login> code/: /build alpine apk add build-base cd /build gcc -o my-build/hello -static hello. c exit
Containers Docker � Criando Nosso uma imagem “Hello-World” Compilando o código num container Linux (alternativa 3) 3 docker run --rm -it -v /c/Users/<login>/docker/hello-world/<login> code/: /build drmarcelorosa/my-ubuntudevel cd /build gcc -o my-build/hello -static hello. c exit
Containers Docker � Criando Nosso uma imagem “Hello-World” Compilando o código num container Linux (alternativa 4) 4 docker run --rm -it -v /c/Users/<login>/docker/hello-world/<login> code/: /build drmarcelorosa/my-alpinedevel cd /build gcc –o my-build/hello –static hello. c exit
Containers Docker � Criando Nosso uma imagem “Hello-World” Salve o seguinte código-fonte com o seguinte nome: C: Users<login>dockerhello-world-codemy <login> -builderDockerfile FROM scratch ADD hello / CMD ["/hello"]
Containers Docker � Criando Nosso uma imagem “Hello-World” Agora que temos o executável e o script de criação de imagem no diretório de montagem docker build --tag our-hello. § Não esqueça deste ponto § Ele define o “contexto” da montagem § Todos os arquivos do contexto são enviados ao daemon Executando um container desta imagem docker run --rm our-hello
Containers Docker � Criando uma imagem <seu-hub-id>/my-ubuntu-devel Dockerfile FROM ubuntu: latest RUN set -xe && apt-get -f update && aptget -f install build-essential CMD ["/bin/bash"] docker login docker build --tag <seu-hub-id>/my-ubuntudevel. docker push <seu-hub-id>/my-ubuntu-devel
Containers Docker � Criando uma imagem <seu-hub-id>/my-alpine-devel Dockerfile FROM alpine: latest RUN set -xe && apk add build-base CMD ["/bin/bash"] docker build --tag <seu-hub-id>/my-alpinedevel. docker push <seu-hub-id>/my-alpine-devel
Containers Docker � Criando uma imagem <seu-hub-id>/my-alpine-devel (via COMMIT) docker run -it --name my-alpine apk add build-base exit docker commit my-alpine <seu-hub-id>/myalpine-devel: v 2 docker run -it --rm <seu-hub-id>/my-alpinedevel: v 2 gcc --version exit
Containers Docker � Criando O uma imagem que é Dockerfile? Dockerfile Para outro nome -f nome-docker-file Descreve como o docker daemon empacotará a imagem Deve começar com FROM Há uma exceção ARG Indica quem é a base para a nova imagem Base mais “básica” scratch Apenas um CMD Se colocar mais de um, docker daemon usará o último
Containers Docker � Criando O uma imagem que é Dockerfile? Dockerfile Comandos FROM, ADD, COPY, RUN geram novas camadas! Por isso agrega-se vários comandos em RUN § Para minimizar o tamanho do container Camadas são diferenças em relação a camada anterior
Containers Docker � Criando O uma imagem que é Dockerfile? Dockerfile CMD e ENTRYPOINT CMD § Comando default quando container é executado § Formato exec (JSON array) ou formato shell § [“cmd”, “param 1”, “param 2”] § [“/bin/sh”, “-c”] § Formato shell § exec param 1 param 2 § Internalmente /bin/sh -c exec param 1 param 2
Containers Docker � Criando O uma imagem que é Dockerfile? Dockerfile CMD e ENTRYPOINT CMD § Se a linha for muito grande usar § Barra invertida § Shell default pode ser alterado SHELL
Containers Docker � Criando O uma imagem que é Dockerfile? Dockerfile CMD e ENTRYPOINT § Comando executado quando container é executado § Ignora RUN § Usa seu conteúdo como parâmetros adicionais § Ignora comando usado em docker run § Também usa-o como parâmetros adicionais § Não usa SHELL default para executar o comando § Um jeito de forçar a execução de um processo!
Containers Docker � Criando O uma imagem que é Dockerfile? Dockerfile ADD e COPY [ADD|COPY] ORIGEM DESTINO Ambos copiam a origem no destino § Destino é sempre um local na imagem do Docker COPY § Origem deve estar no sistema de arquivos do host ADD § Além do host, pode ser uma URL (arquivo ZIP) § Arquivo TAR ZIP e TAR são expandidos na imagem
Containers Docker � Criando O uma imagem que é Dockerfile? Dockerfile EXPOSE PORTA/PROTOCOLO EXPOSE PORTA “Abre firewall” do container para uma porta Lembre-se que precisa mapeá-la com docker run –p ENV CHAVE VALOR ENV CHAVE=VALOR Define variável de ambiente na construção da imagem Tais variáveis também são disponíveis para o container § Lembre-se, estamos falando de LINUX!
Containers Docker � Criando uma aplicação multisserviços Aplicação conjunto de serviços Geralmente dependentes Exemplo: Servidor de banco de dados + php + servidor HTTP Cada serviço é executado em um container Precisam ser iniciados em uma sequência Em caso de falha, devem ser reiniciados Os parâmetros de suas configurações são interdependentes
Containers Docker � Criando uma aplicação multisserviços Uma aplicação pode ser manualmente executada Esse processo pode ser automatizado Facilita gestão dos processos, minimizando erros! docker-compose Ferramenta para automação da iniciação, gerenciamento e encerramento de uma aplicação
Containers Docker � Criando uma aplicação multisserviços Exemplo manual Servidor Word. Press, com SGDB My. SQL separado 2 containers (Word. Press e My. SQL) My. SQL docker stop my-web my-db docker run --name comp 1 -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=wordpress -v db_data: /var/lib/mysql -d mysql: 5. 7
Containers Docker � Criando uma aplicação multisserviços Exemplo manual 2 containers (Word. Press e My. SQL) docker inspect comp 1 Confirmar endereço de rede de comp 1 docker run --name comp 2 -e WORDPRESS_DB_HOST=172. 17. 0. 4: 3306 –e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpress -p 8000: 80 –v wp_data: /var/www/html –d wordpress: latest
Containers Docker � Criando uma aplicação multisserviços Exemplo manual 2 containers (Word. Press e My. SQL) Para terminar a instalação do Word. Press Abra navegador em sua página de configuração/gestão § http: //192. 168. 99. 100: 8000 § Não precisa terminar a configuração!
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose Arquivo no formato YAML Ain’t Markup Language Usa indentação como o Python § mas não é Python!!! Padrão para serialização de dados § A grosso modo para facilitar configuração Há diferentes versões de comandos para docker-compose Evolução do produto!
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose Podemos escrever o script da aplicação na versão desejada Crie o diretório C: Users<login>dockercompose 1 <login> § Conterá dados da aplicação
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose C: Users<login>dockercompose 1wp. yml <login> version: '3. 1' services: § wordpress: § image: wordpress: latest § restart: always § ports: § - 8000: 80
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose C: Users<login>dockercompose 1wp. yml <login> § environment: § WORDPRESS_DB_HOST: db § WORDPRESS_DB_USER: wordpress § WORDPRESS_DB_PASSWORD: wordpress § volumes: § - wp_data: /var/www/html § depends_on: § - db
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose C: Users<login>dockercompose 1wp. yml <login> § db: § image: mysql: 5. 7 § restart: always § environment: § MYSQL_DATABASE: wordpress § MYSQL_USER: wordpress § MYSQL_PASSWORD: wordpress § volumes: § - db_data: /var/lib/mysql
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose C: Users<login>dockercompose 1wp. yml <login> volumes: § wp_data: § db_data: Para executá-lo cd /c/Users/<login>/docker/compose 1/ /<login> docker-compose -f wp. yml up
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose Para interrompê-lo CTRL+C § Envia um sinal SIGTERM para containers docker-compose -f wp. yml down Para executá-lo em background docker-compose -f wp. yml up –d Não esqueça: http: //192. 168. 99. 100: 8000
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose Outras ações docker-compose –f wp. yml logs docker-compose –f wp. yml top docker network ls docker network inspect <compose_net> docker volume ls docker ps -a
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose O que observamos? Script reflete operações manuais envolvendo imagens e containers. § Minimiza erros de desenvolvimento, teste e produção Preparação para execução em cluster ou nuvem Preparação para orquestração Serviços são etiquetados (tag) de acordo com o nome do diretório/projeto!
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose Construindo imagens (build) Construir um servidor simples Python + Flask Persistir número de acessos de uma página Redis § Servidor de cache
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose Crie o diretório C: Users<login>dockercompose 2 <login> Baixe o arquivos. . . nesse diretório Abra o arquivo app. py Abra o arquivo Dockerfile Abra o arquivo docker-compose. yml
Containers Docker � Criando uma aplicação multisserviços Exemplo com docker-compose cd /C/Users/<login>/docker/compose 2 /<login> docker-compose up Abra o navegador http: //192. 168. 99. 100: 5000 Faça o navegador recarregar a página algumas vezes
Containers Docker � Criando Visão uma aplicação multisserviços geral do arquivo no formato Yaml services: Que podem ser construídos (build) Como docker service [cmd]. . . networks: Definição da estrutura de rede Como docker network [cmd]. . . volumes: Definição dos elementos de armazenagem de dados Como docker volume [cmd]. . .
Containers Docker � Criando Visão uma aplicação multisserviços geral do arquivo no formato Yaml secrets: Definição de dados sensíveis § Senhas, dados privados Como docker secret [cmd]. . . configs: Definição de dados não-sensíveis § Arquivos de configuração, iniciação Como docker config [cmd]. . .
Containers Docker � Usando um cluster Docker Swarm Um gestor (manager) e vários colaboradores (workers) Suporta mais gestores § Tolerância a falhas Suporte a balanceamento de carga e despachante Opera sobre a aplicação multisserviço Serviços em diferentes nós do cluster, por exemplo
Containers Docker � Docker Swarm Usado para gestão de cluster Orquestração de serviços Rival do Kubernetes é uma produto open-source da Google Algoritmo de consenso de Raft O objetivo é garantir execução ótima da aplicação Usando restrições impostas Assumindo possibilidade de falhas Possibilitando atualizações dinâmicas
Containers Docker � Docker Swarm Executor Worker 1 Gestor 2 Executor Worker 1 Gestor 3 Executor Worker 1
Containers Docker � Docker Swarm
Containers Docker � Docker Gestor Swarm (Manager) Responsável pela filiação (membership) e delegação de tarefas (tasks) Trabalhador (Worker) Executa as tarefas (tasks) atribuídas a ele Entidade de execução Executor Executam os services Canais de comunicação entre gestores e trabalhadores
Containers Docker � Docker Swarm Agora, um serviço (parte de uma aplicação) é um grupo escalável de containers idênticos Balanceamento Alocação “ótima” de containers por máquina Distribuição de carga entre containers idênticos Ex: atender requisições HTTP em múltiplas máquinas Serviço de carga DNS embutido Encontrar rapidamente as máquinas do cluster
Containers Docker � Docker Swarm da diversão. . . Formar um cluster com 3 VMs my-node 1 my-node 2 Hora default Usar o boot 2 docker. iso Já temos 1 das VMs! docker-machine create --driver virtualbox my-node 1 docker-machine create --driver virtualbox my-node 2
Containers Docker � Docker Swarm Abrir dois terminais para monitorar os nós criados Em cada terminal docker-machine ssh my-node 1 docker-machine ssh my-node 2 Iniciar o cluster No terminal do nó default docker swarm init --advertise-addr 192. 168. 99. 100 IP definido na VM do nó default
Containers Docker � Docker Em Swarm cada terminal docker swarm join --token BLABLABLA 192. 168. 99. 100: 2377 Use copiar-e-colar para isso Miss the token § docker swarm join-token [manager|worker] Pronto. . . temos um cluster! default também será um worker! my-node 1 my-node 2 default
Containers Docker � Docker Para examinar a rede docker network ls docker network inspect <rede> Para examinar a execução dos containers docker ps -a Como antes! Para Swarm examinar os nós docker node ls docker node inspect <nó> docker node inspect --pretty <nó>
Containers Docker � Docker Swarm Criar um serviço fake usando ping e replicá-lo para usar vários containers distribuídos no cluster Potencial DDo. S Faremos manualmente usando docker cmd Poderia ser executado com docker-compose
Containers Docker � Docker Swarm Criar um serviço fake usando ping e replicá-lo para usar vários containers distribuídos no cluster docker service create --replicas=1 --name ddos alpine ping docker. com docker service ls docker service inspect --pretty ddos docker ps –a
Containers Docker � Docker Swarm Criar um serviço fake usando ping e replicá-lo para usar vários containers distribuídos no cluster Vamos agora ampliar o número de réplicas docker service scale ddos=5 service ls service inspect --pretty ddos ps –a
Containers Docker � Docker Swarm Criar um serviço fake usando ping e replicá-lo para usar vários containers distribuídos no cluster Precisamos interromper o uso do nó my-node 1 Para manutenção, por exemplo docker node update --availability drain mynode 1 active drain “move” containers para os demais nós disponíveis
Containers Docker � Docker Swarm Criar um serviço fake usando ping e replicá-lo para usar vários containers distribuídos no cluster Reestabelecendo nó my-node 1 docker node update --availability active my -node 1 drain active Não faz qualquer re-distribuição de tarefas. Estados possíveis active, pause, drain
Containers Docker � Docker Swarm Criar um serviço nginx com roteamento automático no cluster/balanceamento de carga Routing mesh docker service create --name my-web -publish 8080: 80 --replicas 2 nginx Note: 2 containers vs 3 nós docker-machine ls Para capturar os IPs dos nós
Containers Docker � Docker Swarm Criar um serviço nginx com roteamento automático no cluster/balanceamento de carga Routing mesh Abra navegador em http: //192. 168. 99. 100: 8080/ http: //192. 168. 99. 101: 8080/ http: //192. 168. 99. 102: 8080/
Containers Docker � Docker Swarm Criar um serviço nginx com roteamento automático no cluster/balanceamento de carga Routing mesh docker service update --replicas 5 my-web docker service update --replicas 1 my-web
Containers Docker � Docker Stack Implantar uma pilha de aplicação em um cluster Multisserviços em multimáquinas Exemplo: Crie o diretório C: Users<login>dockercompose 3 <login> Baixe o arquivos. . . nesse diretório Abra o arquivo docker-compose. yml Note o nome da imagem armazenar em Docker Hub cd /C/Users/<login>/docker/compose 3 /<login>
Containers Docker � Docker Stack Implantar uma pilha de aplicação em um cluster Multisserviços em multimáquinas Exemplo: Construir as imagens docker-compose up -d docker-compose down --volume docker images
Containers Docker � Docker Stack Implantar uma pilha de aplicação em um cluster Multisserviços em multimáquinas Exemplo: Registrar (upload) a imagem em um repositório docker-compose push § No caso, a imagem ficará no Docker Hub
Containers Docker � Docker Stack Implantar uma pilha de aplicação em um cluster Multisserviços em multimáquinas Exemplo: Implantar (deploy) a pilha no cluster docker stack deploy --compose-file docker-compose. yml stackdemo docker stack services stackdemo docker stack ps stackdemo
Containers Docker � Docker Stack Implantar uma pilha de aplicação em um cluster Multisserviços em multimáquinas Exemplo: Implantar (deploy) a pilha no cluster docker ps -a § Cheque os diferentes nós § Acesse a página http: //192. 168. 99. 100: 5000/
Containers Docker � Docker Stack Implantar uma pilha de aplicação em um cluster Multisserviços em multimáquinas Exemplo: Encerrando a pilha de aplicação docker network ls docker stack rm stackdemo docker stack ps stackdemo
Containers Docker
- Marcelo de oliveira rosa
- Marcelo de oliveira rosa
- Rosangela rosa da rosa
- Prof rosa agustina
- Marcelo manta
- Marcelo kaihara
- Marcelo canellas
- Marcelo pontes vianna
- Marcelo caiazzo nudes
- Ang diariong itinatag ng kilusang propaganda
- Bønder telemacos pef htc wildfire test
- Marcelo tatit sapienza
- Marcelo rivano fischer
- Marcelo rouco
- Becky kew
- Marcelo a
- Centro pop blumenau
- Quimica geral
- Marcelo manta
- Marcelo gervilla gregório
- Marcelo pandolfo
- Marcelo osvaldo lucentini
- Marcelo verdini maia
- Marcelo astorga
- Marcelo borghetti
- Marcelo canellas
- Volume in vivo of plasma
- Colegio marcelo spinola jaen
- Marcelo jose ferlin d'ambroso
- Calculo de necesidades basales
- Marcelo cagnoli
- Marcelo botelho martins
- Marcelo canellas
- Marcelo morales lattes
- Marcelo feruglio
- Marcelo tatit sapienza
- Anjolina grisi de oliveira
- Enzo de oliveira moreira
- Reticulados
- Vini oliveira
- Manoel de oliveira paiva
- Dexedor
- Pedro henrique casagrande oliveira
- Rodrigo azevedo de oliveira
- Sued cristina campos oliveira
- Grafo conexo
- Alberto de oliveira parnasianismo
- Ana carolina oliveira
- Oliveira
- Roberto imbuzeiro oliveira
- Lucas valente de oliveira
- Jenni oliveira
- Richter
- Anjolina
- Anjolina
- Sued cristina campos oliveira
- Jitka de oliveira manuelová
- Anjolina
- Parnasianismo slide
- Ana margarida oliveira
- Grafo completo
- Raquel oliveira prates
- Anjolina
- Anjolina
- Igor carboni oliveira
- Conjectura de goldbach
- Martifer benavente
- After warhol flowers
- Roberto imbuzeiro
- Karina oliveira nua
- Francisco anysio de oliveira paula filho
- Raica oliveira bellazon
- Anjolina
- Neoinstitucionalismo
- Sued cristina campos oliveira
- Fernando oliveira martins
- Octavio frias
- Algoritmo de hierholzer
- Anjolina grisi de oliveira
- Resa containers
- Scone: secure linux containers with intel sgx
- Returnable containers accounting
- Associative containers
- Two containers
- Liquid is pouring into a container at a constant rate
- Four containers were filled with warm water
- Java swing graphics
- Pete container
- What is quantifiers
- Stivaggio significato
- Containers as a service
- Linux containers (lxc)
- Hpe greenlake
- Containers for change
- Ancient greek containers
- Self sealability test for rubber closures
- Containers lesson plan
- Module 1. stl sequential containers
- Tass eye syndrome
- Walsh consulting engineers
- Cidex opa test strips instructions for use
- Partial pressure formula
- Present and display food products
- Containment hierarchy
- Clarity of aqueous extract test
- What goes in black pharmaceutical waste containers
- Hyperv container
- Bpmn symbols cheat sheet