O que é Docker Container? - Coloque seu aplicativo em contêineres usando Docker



Docker Container é uma solução alternativa leve para Máquina Virtual para criar, implantar e executar aplicativos dentro de um contêiner.

Bem, espero que você tenha lido meus blogs anteriores sobre Docker onde eu abordei o básico do Docker. Aqui, neste blog do Docker Container, irei discutir sobre o que são Docker Containers e como funcionam. Principalmente, estaremos nos concentrando na prática e nos casos de uso do Docker.

Eu listei os tópicos deste blog do Docker Container:





  • Por que precisamos de contêineres Docker?
  • Como funcionam os Docker Containers?
  • Casos de uso de contêiner Docker

Por que precisamos de contêineres Docker?

Ainda me lembro bem, estava trabalhando em um projeto. Nesse projeto, estávamos seguindo a arquitetura de microsserviço. Para aqueles de vocês que não sabem o que é microsserviço, não se preocupe, vou dar uma introdução a ele.

A ideia por trás dos microsserviços é que certos tipos de aplicativos se tornam mais fáceis de construir e manter quando são divididos em partes menores e composíveis que funcionam juntas. Cada componente é desenvolvido separadamente, e o aplicativo é simplesmente a soma de seus componentes constituintes.



Considere o exemplo abaixo:

Aplicativo de compras online - Docker Container - Edureka

No diagrama acima, há uma loja online com microsserviços separados para conta de usuário, catálogo de produtos, processamento de pedidos e carrinhos de compras.



Bem, essa arquitetura tem muitos benefícios:

  • Mesmo se um dos seus microsserviços falhar, todo o seu aplicativo não será afetado.
  • É mais fácil de gerenciar

Existem muitos outros benefícios também, não vou entrar em muitos detalhes sobre microsserviços neste post. Mas, em breve estarei lançando alguns blogs sobre microsserviços também.

Nesta arquitetura, estávamos usando CentOS Virtual Machines. Essas máquinas virtuais foram configuradas escrevendo scripts longos. Bem, configurar essas VMs não foi o único problema.

O desenvolvimento de tais aplicativos requer o início de vários microsserviços em uma máquina. Portanto, se você estiver iniciando cinco desses serviços, precisará de cinco VMs nessa máquina. Considere o diagrama abaixo:

O outro problema é bastante comum, sei que muitos de vocês podem se identificar com ele. O aplicativo funciona no laptop de um desenvolvedor, mas não em teste ou produção. Isso pode ser devido a não manter um ambiente de computação consistente. Considere o diagrama abaixo:

Houve muitos outros problemas além desse também, mas eu sinto que esses problemas são suficientes para eu explicar a você a necessidade de Docker Containers.

Saiba como os contêineres Docker são melhores do que as máquinas virtuais

Então, imagine se eu estou dando 8 GB de RAM para todas as minhas VMs e tenho 5 microsserviços em execução em diferentes máquinas virtuais. Nesse caso, essas VMs exigirão 40 GB de RAM. Bem, agora eu exijo que as configurações da minha máquina host sejam muito altas, quase 44 GB de RAM devem estar lá na minha máquina host. Obviamente, esta não é uma solução sustentável para tal arquitetura porque estou desperdiçando muitos recursos aqui.

Tudo bem, eu tenho muitos recursos para desperdiçar, mas ainda tenho um problema de inconsistência no meu ciclo de vida de entrega de software (SDLC). Tenho que configurar essas VMs no ambiente de teste e também no ambiente de produção. Em algum lugar desse processo, algum software não foi atualizado no servidor de teste e a equipe de desenvolvimento está usando a versão atualizada do software. Isso leva a conflitos.

E se eu estiver usando 100 VMs, a configuração de cada VM levará muito tempo e, ao mesmo tempo, estará sujeita a erros também.

Agora, vamos entender o que é Docker Container, como funciona e como resolveu meu problema.

O que é um Docker Container?

Docker é uma ferramenta projetada para tornar mais fácil criar, implantar e executar aplicativos usando contêineres.

Você pode criar contêineres do Docker, esses contêineres conterão todos os binários e bibliotecas necessárias para o seu aplicativo ou microsserviço no meu caso. Portanto, seu aplicativo está presente em um contêiner ou você o colocou em contêiner. Agora, esse mesmo contêiner pode ser usado no ambiente de teste e produção.

Docker Containers é uma solução leve para máquinas virtuais e usa o sistema operacional host. A melhor parte, você não tem que pré-alocar RAM para o Docker Container, ele irá utilizá-la como e quando necessário. Portanto, com o Docker Container, não preciso me preocupar com o desperdício de recursos.

Vamos entender agora como funciona um Docker Container.

Como funciona um contêiner Docker?

O diagrama abaixo é basicamente uma maneira de usar o Docker. E estou supondo que você tenha uma ideia sobre o Docker Image e o Dockerfile.

Pessoal, eu sei que o diagrama parece um pouco complexo, mas acreditem, não é tão complexo. Abaixo está a explicação do diagrama, mesmo depois que você achar que é difícil de entender, você pode comentar sua dúvida, irei resolver essas questões o mais rápido possível.

  • Um desenvolvedor primeiro escreverá o código do projeto em um arquivo Docker e, em seguida, construirá uma imagem a partir desse arquivo.
  • Esta imagem conterá todo o código do projeto.
  • Agora, você pode executar esta imagem do Docker para criar quantos contêineres desejar.
  • Esta imagem do Docker pode ser carregada no hub do Docker (é basicamente um repositório em nuvem para suas imagens do Docker, você pode mantê-lo público ou privado).
  • Esta imagem do Docker no hub do Docker pode ser obtida por outras equipes, como QA ou Prod.

Isso não apenas evita o desperdício de recursos, mas também garante que o ambiente de computação que está lá no laptop do desenvolvedor seja replicado em outras equipes também. Sinto agora, não preciso dizer por que precisamos do Docker.

Essa era uma maneira de usá-lo, acho que vocês devem estar curiosos para saber como usei o Docker para resolver meu problema de microsserviços. Deixe-me dar uma visão geral sobre o mesmo.

Abaixo está a explicação do diagrama:

  • Em primeiro lugar, escrevemos os requisitos complexos em um Dockerfile.
  • Então, nós o colocamos no GitHub.
  • Depois disso, usamos um servidor CI (Jenkins).
  • Este servidor Jenkins irá puxá-lo do Git e construir o ambiente exato. Isso será usado em servidores de produção e também em servidores de teste.
  • Nós o implantamos em ambientes de teste (refere-se à implantação de seu software em servidores para fins de teste, antes de implantá-los totalmente em produção). Ambientes para testadores.
  • Basicamente, colocamos exatamente o que tínhamos em Desenvolvimento, Teste e Preparação para Produção.

Seria justo dizer que Docker facilitou minha vida.

Bem, essa era a história da minha empresa, vejamos o estudo de caso da Universidade de Indiana. Como Docker resolveu seus problemas.

Estudo de caso da Universidade de Indiana:

A Indiana University é um sistema de universidade pública com vários campi no estado de Indiana, Estados Unidos.

Declaração do Problema

Eles estavam usando scripts personalizados para implantar os aplicativos na VM.

Seu ambiente foi otimizado para seus aplicativos legados baseados em Java. Seu ambiente de crescimento envolve novos produtos que não são exclusivamente baseados em java. Para dar a seus alunos a melhor experiência possível, a Universidade precisava começar a modernizar os aplicativos.

A universidade queria melhorar a maneira como eles arquitetam aplicativos, mudando para uma arquitetura baseada em microsserviços para seus aplicativos.

A segurança era necessária para os dados do aluno, como SSNs e dados de saúde do aluno.

Solução:

Todos os problemas foram resolvidos pelo Docker Data Center (DDC), considere o diagrama abaixo:

Docker Trusted Registry - Ele armazena as imagens do Docker.

IU da Web UCP (Universal Control Plane) - Ajuda no gerenciamento de todo o cluster de um único lugar. Os serviços são implantados usando UCP web UI, usando imagens Docker que são armazenadas em DTR (Docker Trusted Registry).

As equipes de operações de TI aproveitam o Universal Control Plane para provisionar o software Docker instalado nos hosts e, em seguida, implantar seus aplicativos sem ter que fazer um monte de etapas manuais para configurar toda a infraestrutura.

UCP e DTR se integram com seu servidor LDAP para fornecer acesso rápido a seus aplicativos.

Espero que vocês tenham lido os blogs anteriores para aprender o básico do Docker.

Agora, vou explicar como podemos usar o Docker Compose para aplicativos de vários contêineres.

Prática do Docker:

Estou supondo que você instalou o Docker.Vou usar o Docker Compose nesta postagem, abaixo, forneci uma pequena introdução ao Docker Compose.

Docker Compose: É uma ferramenta para definir e executar aplicativos Docker de vários contêineres. Com o Docker Compose, você pode usar um arquivo Compose para configurar os serviços do seu aplicativo. Então, usando um único comando, você pode criar e iniciar todos os serviços de sua configuração.

Suponha que você tenha vários aplicativos em vários contêineres e todos esses contêineres estejam vinculados. Então, você não quer executar cada um desses contêineres um por um. Porém, você deseja executar esses contêineres com um único comando. É aí que o Docker Compose entra em cena. Com ele, você pode executar vários aplicativos em vários contêineres com um único comando. ou seja, docker-compose up.

Exemplo: imagine que você tenha diferentes containers, um executando um aplicativo da web, outro executando um postgres e outro executando redis, em um arquivo YAML. Isso é chamado de arquivo docker compose, a partir dele você pode executar esses contêineres com um único comando.

Vejamos mais um exemplo:

Suponha que você queira publicar um blog, para isso usará CMS (Content Management System), e wordpress é o CMS mais utilizado. Basicamente, você precisa de um contêiner para WordPress e mais um contêiner como MySQL para back end, esse contêiner MySQL deve ser vinculado ao contêiner wordpress. Também precisamos de mais um container para Php Myadmin que será vinculado ao banco de dados MySQL, basicamente, é usado para acessar o banco de dados MySQL.

Que tal eu executar o exemplo acima mencionado de forma prática.

Etapas envolvidas:

  1. Instale o Docker Compose :
  2. Instale o WordPress: Estaremos usando o oficial WordPress e MariaDB Imagens do Docker.
  3. Instale MariaDB: É um dos servidores de banco de dados mais populares do mundo. É feito pelos desenvolvedores originais do MySQL. MariaDB é desenvolvido como um software de código aberto e como um banco de dados relacional que fornece uma interface SQL para acessar dados.
  4. Instale PhpMyAdmin: É uma ferramenta de software livre escrita em PHP, destinada a gerenciar a administração do MySQL na web.
  5. Crie o site WordPress:

Vamos começar!

Instale o Docker Compose:

Instale o Python Pip primeiro:

sudo apt-get install python-pip

Agora você pode instalar o Docker Compose:

sudo pip install docker-compose

Instale o WordPress:

Crie um diretório wordpress:

mkdir wordpress

Entre neste diretório wordpress:

cd wordpress /

Nesse diretório, crie um arquivo YAML do Docker Compose e edite-o usando gedit:

sudo gedit docker-compose.yml

Cole as linhas de código abaixo nesse arquivo yaml:

wordpress: image: links do wordpress: - wordpress_db: mysql ports: - 8080: 80 wordpress_db: image: mariadb ambiente: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: mysql ports: - 8181: 80 ambiente: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Eu sei que você quer que eu explique este código, então o que farei, pegarei pequenas seções deste código e explicarei o que está acontecendo.

wordpress_db: ... ambiente: MYSQL_ROOT_PASSWORD: edureka ...

Isso definirá uma variável de ambiente dentro do contêiner wordpress_db chamada MYSQL_ROOT_PASSWORD com a senha desejada. A imagem MariaDB Docker é configurada para verificar esta variável de ambiente quando for inicializada e cuidará da configuração do banco de dados com uma conta root com a senha definida como MYSQL_ROOT_PASSWORD.

wordpress: ... portas: - 8080: 80 ...

O primeiro número da porta é o número da porta no host e o segundo número da porta é a porta dentro do contêiner. Portanto, essa configuração encaminha solicitações na porta 8080 do host para a porta 80 do servidor da web padrão dentro do contêiner.

phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: portas mysql: - 8181: 80 ambiente: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Isso captura docker-phpmyadmin pelo membro da comunidade corbinu, vincula-o ao nosso contêiner wordpress_db com o nome mysql (significando de dentro do contêiner phpmyadmin, as referências ao nome do host mysql serão encaminhadas para nosso contêiner wordpress_db), expõe sua porta 80 na porta 8181 do sistema host e, finalmente, define algumas variáveis ​​de ambiente com nosso nome de usuário e senha MariaDB. Esta imagem não pega automaticamente a variável de ambiente MYSQL_ROOT_PASSWORD do ambiente do wordpress_dbcontainer, como a imagem wordpress faz. Na verdade, temos que copiar a linha MYSQL_ROOT_PASSWORD: edureka do contêiner wordpress_db e definir o nome de usuário como root.

Agora inicie o grupo de aplicativos:

docker-compose up -d

Isso é tudo que você precisa fazer. Você pode adicionar quantos contêineres quiser dessa maneira e vinculá-los da maneira que desejar.

Agora, no navegador, vá para a porta 8080, usando seu IP público ou nome de host, conforme mostrado abaixo:

localhost: 8080

Preencha este formulário e clique em instalar o WordPress.

Assim que terminar, visite o endereço IP do seu servidor novamente (desta vez usando a porta 8181, por exemplo, localhost: 8181). Você será saudado pela tela de login do phpMyAdmin:

Vá em frente e faça o login usando o nome de usuário root e a senha que você definiu no arquivo YAML, e você poderá navegar no seu banco de dados. Você notará que o servidor inclui um banco de dados WordPress, que contém todos os dados de sua instalação do WordPress.

Aqui, termino meu blog do Docker Container. Espero que tenham gostado desse post. Você pode checar outros blogs na série também, que trata dos fundamentos do Docker.

ir funcionar em python

Se você achou este blog do Docker Container relevante, confira o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O curso Edureka DevOps Certification Training ajuda os alunos a ganhar experiência em vários processos e ferramentas DevOps, como Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack e GIT para automatizar várias etapas no SDLC.

Tem uma pergunta para mim? Mencione isso na seção de comentários e entrarei em contato com você.