>>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.
>> 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
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
06/06/2017 at 11:01 am
Cara sensacional. O gostinho de ver o “negócio” funcionando, é demais! 😀 Parabéns pelos posts.
CurtirCurtido por 1 pessoa
06/06/2017 at 11:09 am
Show Maicon, obrigado pelo FeedBack, estou trabalhando em novos posts pra enriquecer a sequência, inclusive em breve vamos ver aqui o Swarm funcionando!
Abraços!
CurtirCurtir
08/06/2017 at 11:01 pm
Grande Rodrigo!! Seus posts são viciantes. Estava aqui lendo, e lendo…quando vi estava com o terminal aberto e executando cada comando e o melhor, compreendendo o que eu estou fazendo.
Parabéns pelo nível de detalhes, que tem tornado o entendimento tão simples. É um excelente cookbook para quem esta iniciando.
Parabéns!!!!
#Docker
CurtirCurtido por 1 pessoa