>>Apresentação e considerações

Olá pessoal!

Bora lá para a Parte 2 dos nossos Posts a respeito de Docker, ainda estamos em partes introdutórias com comandos e dicas básicas pra quem está iniciando em Docker, por ser um tema MUITO novo e extremamente abrangente temos um campo vasto ainda a se explorar a respeito.

Se você não viu a Parte 01 segue o link:

[Docker] P01 – Instalação no Linux, e nosso primeiro container “hello-wolrd”!

Let’s go!

>> Docker Hub

Essa é uma breve introdução para saber de onde surgem as imagens que vamos trabalhar.

Basicamente o Docker Hub é o repositório oficial (público e privado) de imagens de Docker, ao instalar o Docker por padrão já aponta para o Docker Hub.

No Docker Hub você tem milhares de imagens que vão desde um sistema operacional “limpo” a até aplicações completas e já prontas para uso, lá podemos encontrar tanto imagens oficiais que foram feitas pelos próprios fabricantes em questão ou imagens não oficiais que podem ser de qualquer pessoa, isso mesmo, todos podemos ter uma conta gratuita no Docker Hub e podemos subir as nossas imagens, porém veremos essas questões em um outro post dedicado a esse assunto.

Através do site você pode explorar as imagens e já ter dicas de como utilizá-las.

https://hub.docker.com/

>> Iniciando a brincadeira, listando e baixando imagem

Vamos lá pessoal, bora pra linha de comando!

O comando “docker search” é o que utilizamos para pesquisar e listar as imagens no Docker Hub (lembrando que ainda estamos utilizando o “default”, sendo assim naturalmente ele irá pesquisar no Docker Hub)

Aqui estou listando as 5 primeiras imagens com o nome de “centos”

~# docker search centos |head -n5
NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                                 The official build of CentOS.                   3278      [OK]       
jdeathe/centos-ssh                     CentOS-6 6.8 x86_64 / CentOS-7 7.3.1611 x8...   63                   [OK]
nimmis/java-centos                     This is docker images of CentOS 7 with dif...   25                   [OK]
consol/centos-xfce-vnc                 Centos container with "headless" VNC sessi...   24                   [OK]

Onde:

NAME – Indica o nome da Imagem
DESCRIPTION – Descrição da imagem
STARS – Popularidade da imagem de acordo com as estrelas
OFFICIAL – Se a imagem é de fato oficial
AUTOMATED – Gerada por um processo de Build Automatizado no Docker Hub

Vamos fazer o “pull” (ou download) da imagem “centos” do Docker Hub para a máquina

~# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
93857f76ae30: Pull complete 
Digest: sha256:4eda692c08e0a065ae91d74e82fff4af3da307b4341ad61fa61771cc4659af60
Status: Downloaded newer image for centos:latest

A imagem já se encontra em nosso repositório local de imagens, vejamos:

~# docker image ls
REPOSITORY                                              TAG                 IMAGE ID            CREATED             SIZE
centos                                                  latest              a8493f5f50ff        2 weeks ago         192MB

Aqui podemos ver informações como o nome e ID da imagem, quando foi criada, tamanho e a TAG.

A máquina que estou utilizando para esse LAB é um Linux Mint, vamos iniciar o nosso container e ver que realmente ele iniciou com a imagem do Centos

>> Iniciando nossa imagem “centos”

~# docker run -ti centos /bin/bash
[root@b2bda67db7db /]#

Pronto, estamos lá!

Através de comandos básicos podemos ver que já não estamos em nossa máquina e sim dentro do container.

[root@b2bda67db7db /]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 

[root@b2bda67db7db /]# ps -ef 
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 19:22 ?        00:00:00 /bin/bash
root        15     1  0 19:23 ?        00:00:00 ps -ef

Subimos o container da forma mais básica o possível, podemos ver que o processo “/bin/bash” é o PID 1 do nosso container, ou seja, se esse processo “morrer” o nosso container morre! …

Do jeito que está se fecharmos o terminal ou apertarmos “CTRL + C” ou “CTRL + D” por exemplo o nosso container morre, para prosseguirmos vamos sair do container porém mantendo-o em execução, com a seguinte instrução:

Pressione: CTRL + p + q

Identificando o container em execução:

~# docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b2bda67db7db        centos              "/bin/bash"         11 minutes ago      Up 11 minutes                           happy_goodall

Vamos interagir com nosso container, fazendo update do sistema operacional e exibindo os discos sem efetivamente estar dentro dele

~# docker container exec b2bda67db7db yum update -y

~# docker container exec b2bda67db7db df -h
Filesystem      Size  Used Avail Use% Mounted on
none            103G   54G   44G  56% /
tmpfs           3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1       103G   54G   44G  56% /etc/hosts
shm              64M     0   64M   0% /dev/shm
tmpfs           3.9G     0  3.9G   0% /sys/firmware

À partir dai você pode brincar com o sistema operacional, instalar outros pacotes, e testar N outras operações, tudo o que fizer no container fica no container não afetando nada em seu sistema hospedeiro

>> Parando e removendo o container e a imagem do centos

~# docker container stop b2bda67db7db

~# docker container rm b2bda67db7db

~# docker image rm centos
Untagged: centos:latest
Untagged: centos@sha256:4eda692c08e0a065ae91d74e82fff4af3da307b4341ad61fa61771cc4659af60
Deleted: sha256:a8493f5f50ffda70c2eeb2d09090debf7d39c8ffcd63b43ff81b111ece6f28bf
Deleted: sha256:36018b5e978717a047892794aebab513ba6856dbe1bdfeb478ca1219df2c7e9c

>> Subindo um NGINX e acessando nosso site

Agora vamos subir uma imagem padrão no NGINX para que possamos acessá-lo

docker container run: Executa um container, como processo natural o “run” pesquisa na máquina se existe a imagem, caso não exista, automaticamente ele faz o pull do repositório configurado.

O parâmetro “-d” indica que iremos rodar esse container em Background ou desatachado.

-p 8090:80 diz que estamos “bindando” a porta do nosso host 8090 na porta 80 dentro do container

nginx por fim, indica o nome da imagem, vejamos:

~# docker container run -d -p 8090:80 nginx
cedaf73190f6c613c1793ef4dab1b97582c832e4fc813e5db5c58d7937ff5291

~# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                           NAMES
cedaf73190f6        nginx               "nginx -g 'daemon ..."   9 minutes ago       Up 9 minutes        443/tcp, 0.0.0.0:8090->80/tcp   brave_babbage

O nosso container já está de pé, agora vamos acessar o nosso site através do navegador web e veremos a página inicial padrão do NGINX

nginx-default-page

PRONTO, nosso site está disponível!

Agora vamos apagar, e dessa vez para apagar estou utilizando o parâmetro “-f”, ou seja, o nosso container ainda está em execução, e com o “-f” forçamos a remoção do container

~# docker container rm -f cedaf73190f6
cedaf73190f6
rdglinux ~ # docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

~# docker image rm nginx
Untagged: nginx:latest
Untagged: nginx@sha256:52a189e49c0c797cfc5cbfe578c68c225d160fb13a42954144b29af3fe4fe335

>> Conclusão

Sucesso!!! …já fomos um pouco mais além brincando com o Docker, essa série está apenas começando, espero estar sendo prático, objetivo e esclarecedor, caso tenham elogios, críticas ou sugestões por favor não deixem de comentar e claro se gostou curta e compartilhe!!!

Fiquem ligados em nosso próximo post, estamos caminhando para a Parte 3 de Docker!!! …

Obrigado a todos…SHOW!!!

>>Referências

https://docs.docker.com/docker-hub/
https://hub.docker.com/_/nginx/
https://www.youtube.com/watch?v=0cDj7citEjE