Criação de Conteiners usando Docker:

Este projeto tem como o objetivo desmostrar a criação
de um container em todas as suas etapas utilizando o software Docker,
que é um dos softwares de virtualização mais famosos no cenário atual.

Usuario: aluno
Oi, você poderia me dar algumas informações sobre o docker?

Fake AI
Claro, Docker software de código aberto muito utilizado para trabalhos de virtualização, o Docker é capaz de criar containers (regiões que operam de maneira isolada e independente), os quais são muito úteis para situações em que é necessario alguma motificação no sistema porém o responsavel programador não deseja modificar diretamente o código. Essa situação é extremamente comum em sistemas de bancos antigos, como os bancos antigos foram feitos em COBOL, quando é necessaria uma modificação o programador responsavel prefere utilizar recursos de cirtualização, a ferramenta Docker é uma das ferramentas que disponibiliza esse recurso.

Usuario: aluno
Legal! Como o container consegue fazer esse tipo de aplicação?

Fake AI
Virtualização é a tecnologia usada para criar ambientes virtuais isolados dentro de um outro sistema físico. Isso permite com que as máquinas virtuais possam trabalhar independentemente uma das outras. Uma máquina virtual possui seu próprio sistema operacional, hardware virtualizado e é considerada como uma entidade separada. No caso dos containers, eles possuem a diferença de compartilhar o mesmo Kernel do SO de seu host, sendo uma forma de virtualização em nível de sistema operacional.

Usuario: aluno
O que significa compartilhar o mesmo kernel?

Fake AI
O Kernel é o núcleo do sistema operacional, ele é responsavel por diversas atividades do computador como gerenciamento de memória, gerenciamento de processos gerenciamento de dispositivos, gerenciamento de rede e gerenciamento de sistemas de arquivos. Basicamente o kernel é a fronteira entre o hardware do computador e os aplicativos de software. Então, compartilhar o mesmo kernel significa que, embora os containers sejam aplicações isoladas, o kernel do computador vai tratar tanto o container como os processos dele como processos normais do computador.

Usuario: aluno
E como funciona o processo de virtualização? que tipo de métodos e tecnologias englobam isso?

Fake AI
A virtualização é uma tecnologia utilizada para a criação de ambientes virtuais, ambientes virtuais, que são ambientes isolados em um único sistema físico. Por sistema físico podemos nos referir a: processadores, memória, armazenamento, rede. Assim, cada ambiente virtual possui uma cópia de um sistema operacional, drivers, aplicativos buscando se tornar uma aplicação independente. Esse tipo de tecnologia é muito utilizada em servidores por exemplo, para maior apriveitamento do hardware, digamos que você possua um servidor e queria fazer uma aplicação nele, você pode virtualizar uma parte dele para uma aplicação destinada apenas a sua aplicação desejada. Dessa forma você não irá utilizar uma grande potência de hardware para apenas uma aplicação, não irá comprometer o servidor a operar apenas dentro das necessidades individuais dessa aplicação e pode criar outras aplicações com o restante da capacidade do servidor.

Fake AI
Então dizemos que os containers são ambientes isolados vitualmente, no caso do Docker, é utilizada a virtualização de nível de sistema operacional, que se difere no ponto em que o container criado partilha o mesmo Kernel do host, porém ainda são considerados isolados. Essa aplicação permite que os containers sejam mais rápidos e eficientes já que não possuem a necessidade de virtualizar todo um sistema operacional a parte. Esse método de virtualização é graças ao uso de recursos do Kernel do Linux, como os principais temos o cgroups e o namespaces. Os namespaces isola os recursos do sistema, como os processos, a rede, o sistema de arquivos e o hostname dos outros containers. Os cgroups determinam os recursos disponiveis que cada container pode consumir, como APU, memória e E/S.

Usuario: aluno
Entendi tudo!! Como os containers são criados no sistema então?

Fake AI
Para a criação do container precisamos criar um Dockerfile, isto é, um arquivo que contém as instruções para a criação da imagem. Imagem, no conceito docker, é um pacote que contem o necessário para a execução de um software.
Nele contem os comandos:


FROM: Especifica uma imagem base usada para ponto de partida para a construção da nova imagem.

RUN Executa comandos do shell do container durante o processo de construção.

COPY ou ADD : Copia os arquivos para o container, ou seja pegar o codigo fonte e adicionar os recurso dele no container.

WORKDIR: Define o diretorio do trabalho no Container , onde sera executado os processos.

EXPOSE: : informa ao Docker as portas de escuta para a chamada da execução.

CMD ou ENTRYPOINT : Especifica o comando ao iniciar o container.

Fake AI
Apos a criação do Dockerfile você usará o comando docker build no terminal(linux) ou pelo powerShell(windows), que vai contruir a imagen do container. O docker lerá o Dockerfile e realizará as etapas especificas para criação da imagem.
docker build -t Imagem_do_Container: fara o mesma execução do comando acima só com a flag -t usado para nomear a imagem no container.
Para a execução do container é necessario o comando: docker run no prompt, nele executa o container ja contruido, alem de adicionar "flags" para poder especificar opçoes adicionais, como mapeamento da porta, variaveis do ambiente entre outras coisas.

Usuario: aluno
E Caso queira saber, como remover ou excluir os container no docker?

Fake AI
Para a remoção dos Container precisamos saber primeiro o ID em que ele esta sendo executado usamos o comando: docker ps que mostra-rá na tela o ID e o nome da imagem em que foi criado.
Após descobrir qual ID está o container em que foi criado usamos o docker rm ID_do_container_criado ou docker rm Nome_do_Container que realizara a remoção do container, mas antes dessa etapa o container não pode estar sendo executado para isso usamos o docker stop ID_container ou docker stop Nome_Container, caso queira remover todos os container parado de uma vez pode usar docker container prume.
mas lembre-se, apos a remoção você apagará todo os dados contidos nele.

Usuario: aluno
E tem uma maneira de usar as imagens sem ter que criar?

Fake AI
Sim, tem como pegar imagens feitas pelo outros programadores ateves de uma comunidade focada em imagens atraves do link do Docker Hub.
apos o nome da imagem que vc achar, use o comando: docker run Imagem_Encontrada_DockerHub.