Conhecendo o Docker - Parte #1


Fala galera, beleza? 😎
Hoje vamos conhecer um pouco sobre Docker 🐳 e como essa nova tecnologia vem para revolucionar o mercado de TI, trazendo mais agilidade e segurança nas operações de infraestrutura.

O que é Docker? 🐳

Antes de começarmos a falarmos sobre Docker, vamos definir o conceito sobre ele.
Docker não é um sistema de virtualização tradicional, podemos dizer que o Docker opera de uma forma mais inteligente que os sistemas de virtualização tradicionais que conhecemos.

Ambientes de virtualização tradicionais necessitam de um sistema operacional completo e isolado para seu funcionamento, já no Docker temos recursos isolados utilizando bibliotecas do kernel em comum, ou seja, utilizando o mesmo kernel do Host e no container.
Tudo isso é possível, pois o Docker utiliza como backend o famoso LXC (Linux Containers).

Veja na imagem abaixo como é o funcionamento de um sistema de virtualização e do Docker.


Imagem criada por Johnny Ferreira – Créditos: Johnny Ferreira

Notem que nas maquinas virtuais temos uma camada a mais, que é o sistema operacional das maquinas virtuais, chamados normalmente de Guest OS, sendo instalados no Hypervisor, ocupando memória, processamento, disco e rede. Tudo isso para que possamos instalar nossos servidores web e rodarmos o apache/php com mysql.

Agora reparem na opção de containers do Docker, o mesmo elimina a camada do Guest OS e compartilha o Kernel de um servidor Linux, reduzindo o uso de memória, disco, processamento e rede. Rodando de forma mais simplificada e customizada uma imagem com o mesmo apache/php e mysql entre outras aplicações.

Você pode instalar o Docker em Linux (Kernel 3.8 ou superior), Windows ou Mac.

Abaixo temos o link oficial do Docker sobre instalação em diversos sistemas operacionais.
Instalando Docker no Microsoft Windows
Instalando Docker no Mac OS X
Instalando Docker no Linux Ubuntu
Instalando Docker no Linux Debian
Instalando Docker no Linux CentOS
Instalando Docker no Linux Fedora

Começando com o Docker

Nosso ambiente aqui no TI da Hora para realizar esse tutorial é uma maquina com Ubuntu 16.04.
Se você deseja instalar o Ubuntu e não sabe por onde começar, confira o vídeo de instalação clicando aqui.

O kernel para o Docker precisa ser superior ao kernel 3.8.
Verificando o kernel no Linux.

uname -r

Instalando o Docker

Essa instalação pode ser efetuada em qualquer sistema Linux, você pode executar o comando abaixo em ambientes Red Hat, CentOS, Debian, etc.

Verifique se possui o ‘curl’ instalado no seu sistema, caso não tenha efetue a instalação do mesmo.

Instalando o Docker, o comando abaixo realiza a instalação do docker no seu ambiente, seja ele um Ubuntu, Debian ou CentOS.

curl -sSL https://get.docker.com | sh

Mudando para ‘root’:

sudo su -

Verificando a versão do Docker:

docker -v

Verifique se após a instalação do Docker o mesmo encontra-se em execução no sistema:

ps -ef |grep docker

Comandos básicos no Docker

Listando os processos em execução:

docker ps

Note que não temos nenhum processo rodando ainda, vamos fazer isso mais pra frente.

Listando as Imagens:

docker images

Criando seu Primeiro Container no Docker

Nosso primeiro container será um CentOS 6.9, vamos efetuar a instalação de um ambiente web no mesmo, contendo Apache, PHP e MySQL.

Você pode escolher sua imagem no site oficial do Docker: https://hub.docker.com/

Criando o container com CentOS 6.9

docker run -it centos:6.9 /bin/bash

Parâmetros:
-i = interativo
-t = terminal

Reparem que o Docker já fez a instalação do sistema que pedimos e na sequência já nos jogou direto ao prompt de comandos do container com CentOS 6.9.

Verifique o ambiente desse container, com o comando abaixo:

cat /etc/issue

Atualizando o CentOS 6.9

yum -y update && yum clean all

Observação: O yum clean all limpa os pacotes baixados no update.

Saindo do Container e Voltando ao Host Principal

Para que possamos sair do container sem encerra-lo, precisamos digitar no teclado as seguintes sequência no teclado: ctrl + p + q


Teclado Apple

No Host principal digite novamente o comando “docker ps”:

docker ps

Vejam que temos nosso Container rodando CentOS 6.9 que acabamos de subir, bem como as informações de qual comando estamos executando, ou seja, o /bin/bash e quanto tempo estamos com ela rodando.

Voltando ao Console do Container

Para voltarmos ao console do Container, precisamos pegar o Container ID, aquele que está listado na imagem acima, gerada pelo comando “docker ps”:

Vamos utilizar o comando abaixo para voltar ao console do container:

docker attach 020b238d63e7

E na sequência já ganhamos acesso ao console. 🐧

Instalando Serviços no Container

Certo, agora vamos instalar o Apache, PHP e MySQL em nosso container rodando CentOS 6.9.

yum -y install httpd php mysql-server php-mysql

Iniciando os serviços:

/etc/init.d/httpd start
/etc/init.d/mysqld start

Verificando o IP do Container:

ifconfig

Observem que temos um IP diferente da nossa rede local, isso porque o Docker cria um pool de endereço gerenciados pelo próprio docker, ou seja, para podermos acessar nossa aplicação que está rodando ai nesse container, é necessário que na hora da criação do container, passarmos um parâmetro de portas na hora da criação do container.

Saia do container e vamos refaze-lo da maneira com que possamos acessar nossa aplicação web através dos parâmetros corretos.

Para sair do container utilize a sequência do teclado: ctrl + p + q

Parando um Container

Agora precisamos parar nosso container, para que possamos subi-lo da maneira correta.

docker stop CONTAINER-ID

ou seja

docker stop 020b238d63e7

Verificando se a imagem foi encerrada com sucesso:

docker ps

Notem que o container não se encontra mais rodando em nosso docker.

Subindo um container e encaminhando portas ao host principal

Para que possamos inicialmente visualizar nosso diretório web instalado em um container é necessário direcionarmos uma porta do host principal a uma porta do serviço do container.

Porta 88 do Host Principal -> Porta 80 do Container

docker run -it -p 88:80 centos:6.9 /bin/bash

Agora vamos instalar o Apache no novo container.

Basicamente o mesmo processo que realizamos anteriormente sem a configuração de porta no Container.

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

Iniciando os serviços instalados:

/etc/init.d/httpd start

Verificando os processos rodando no Container.

ps -ef

Reparem que os processos que estão rodando é apenas do bash e do apache, ou seja, o Docker nos da uma possibilidade de redução muito grande nas performances de servidores.

Agora vamos saindo do Container, sem encerra-lo, (ctrl + p + q) e vamos visualizar os processos do Docker no Host principal.

Reparem na marcação abaixo a configuração do parâmetro (-p) que passamos no comando na hora da criação do container, esse parâmetro irá nos permitir acessar o Container através da porta 88 do Host principal.

Pegando o IP do Host Principal (Docker)

ip addr show

Você pode filtrar a sua placa de rede, no meu caso minha placa de rede é “enp0s3”

ip show addr |grep enp0s3

Agora vamos acessar esse endereço IP da seguinte forma em nosso browser: http://iphost:88

Página Inicial do Apache2 no CentOS 6.9

Acessamos o nosso servidor Web hospedado no container que subimos, legal não? 😎

Essa foi uma breve introdução sobre o Docker e de como ele poder ser bem útil em diversos ambientes de infraestrutura de TI.

Espero ter lhe auxiliado de alguma forma, trazendo um pouco de conhecimento sobre Docker e mostrando um pouco do que as grandes corporações como Google, Facebook estão utilizando em suas plataformas.

Em breve Conhecendo o Docker – Parte #2.

Dúvidas, comentário e sugestões postem nos comentários…
👋🏼 Até a próxima!


Johnny Ferreira
johnny.ferreira.santos@gmail.com
http://www.tidahora.com.br


comments powered by Disqus