Skip to content

Latest commit

 

History

History
519 lines (416 loc) · 30.3 KB

04-basic-network.md

File metadata and controls

519 lines (416 loc) · 30.3 KB

#Autor: Robson Vaamonde
#Procedimentos em TI: http://procedimentosemti.com.br
#Bora para Prática: http://boraparapratica.com.br
#Robson Vaamonde: http://vaamonde.com.br
#Facebook Procedimentos em TI: https://www.facebook.com/ProcedimentosEmTi
#Facebook Bora para Prática: https://www.facebook.com/BoraParaPratica
#Instagram Procedimentos em TI: https://www.instagram.com/procedimentoem
#YouTUBE Bora Para Prática: https://www.youtube.com/boraparapratica
#Data de criação: 10/10/2024
#Data de atualização: 06/04/2025
#Versão: 0.08
#Testado e homologado no GNU/Linux Ubuntu Server 24.04.x LTS
#Testado e homologado no Docker-CE (Community Edition) 24.x
#Testado e homologado no Portainer-CE (Community Edition) 2.x

Release Ubuntu Server 24.04: https://fridge.ubuntu.com/2024/04/25/ubuntu-24-04-lts-noble-numbat-released/

Release Notes Ubuntu Server 24.04.2: https://fridge.ubuntu.com/2025/02/20/ubuntu-24-04-2-lts-released/
Release Notes Ubuntu Server 24.04.x: https://canonical.com/blog/canonical-releases-ubuntu-24-04-noble-numbat
Ubuntu Advantage for Infrastructure: https://ubuntu.com/advantage
Ciclo de Lançamento do Ubuntu Server: https://ubuntu.com/about/release-cycle
Releases All Ubuntu Server: https://wiki.ubuntu.com/Releases

OBSERVAÇÃO IMPORTANTE: COMENTAR NO VÍDEO DO BÁSICO DE DOCKER-CE SE VOCÊ CONSEGUIU FAZER A IMPLEMENTAÇÃO COM A SEGUINTE FRASE: Básico de Network dos Containers de Docker-CE realizado com sucesso!!! #BoraParaPrática

COMPARTILHAR O SELO DO DESAFIO NAS SUAS REDES SOCIAIS (LINKEDIN, FACEBOOK, INSTAGRAM) MARCANDO: ROBSON VAAMONDE COM AS HASHTAGS E COPIANDO O CONTEÚDO DO DESAFIO ABAIXO:

LINK DO SELO: https://github.com/vaamonde/ubuntu-2404/blob/main/selos/06-network-docker.png

#boraparapratica #boraparaprática #vaamonde #robsonvaamonde #procedimentosemti #ubuntuserver #ubuntuserver2404 #desafiovaamonde #desafioboraparapratica #desafiodocker #desafiodockerce #desafionetwork

Conteúdo estudado nesse desafio:
#01_ Verificando as Interfaces e Endereçamento IPv4 padrão do Docker-CE
#02_ Verificando as Redes criadas por padrão no Docker-CE
#03_ Criando (Create) Volumes (Volume) no Docker-CE
#04_ Criando (Create) Contêiner (Container) com o Volumes (Volume) e Publicando (Publish) a Porta (Port) do Apache2 no Docker-CE
#05_ Inspecionando (Inspect) o Contêiner (Container) da Imagem (Image) do Apache2 no Docker-CE
#06_ Verificando as Interfaces de Rede criadas pelo Docker-CE no Ubuntu Server
#07_ Analisando as Configurações de Pontes de Rede (Bridges) e Regras de Firewall (IPTables) do Docker-CE
#08_ Criando (Create) Redes (Network) do Tipo Ponte (Bridge) no Docker-CE
#09_ Criando (Create) Contêiner (Container) com o Volumes (Volume), Rede (Network) e Publicando (Publish) a Porta (Port) do NGINX no Docker-CE
#10_ Removendo (RM) Volumes (Volume), Contêiners (Container), Imagens (Image) e Redes (Network) no Docker-CE

Site Oficial do Docker: https://www.docker.com/
Site Oficial do Docker Engine: https://docs.docker.com/engine/install/
Site Oficial do Docker Compose: https://github.com/docker/compose
Site Oficial do Docker Hub: https://hub.docker.com/

O QUE É E PARA QUE SERVER O DOCKER CE: Docker é um conjunto de produtos de plataforma como serviço que usam virtualização de nível de sistema operacional para entregar software em pacotes chamados contêineres. Os contêineres são isolados uns dos outros e agrupam seus próprios softwares, bibliotecas e arquivos de configuração.

O QUE É E PARA QUE SERVER O DOCKER HUB: Docker Hub é um registro de contêiner criado para desenvolvedores e colaboradores de código aberto encontrarem, usarem e compartilharem suas imagens de contêiner. Com o Hub, os desenvolvedores podem hospedar repositórios públicos que podem ser usados ​​gratuitamente ou repositórios privados para equipes e empresas.

O QUE É E PARA QUE SERVER O NETWORK DO DOCKER: O Network no Docker refere-se ao sistema de rede virtual usado para conectar containers entre si e com o mundo externo. Ele permite que containers se comuniquem de maneira controlada e segura, tanto entre si quanto com redes externas, como a rede do host ou a internet.

Network Docker

Link da vídeo aula: https://www.youtube.com/watch?v=MSJmXtRu45I

01_ Verificando as Interfaces e Endereçamento IPv4 padrão do Ubuntu e Docker-CE

#verificando as informações de Placa de Rede (Network) do Ubuntu Server
#opção do comando lshw: -class (Only show the given class of hardware)
sudo lshw -class network

#verificando a interface e endereço IPv4 do Ubuntu Server
sudo ifconfig enp0s3
  enp0s3: 172.16.1.30/24 

#verificando a tabela de roteamento IPv4 do Ubuntu Server
#opção do comando route: -n (numeric)
sudo route -n
  0.0.0.0  172.16.1.254  0.0.0.0  UG  0  0  0  enp0s3

#verificando as informações dos servidores DNS do Ubuntu Server
sudo resolvectl

#verificando a interface e endereço IPv4 do Docker-CE
sudo ifconfig docker0
  docker0: 172.17.0.1/16 (255.255.0.0)

02_ Verificando as Redes criadas por padrão no Docker-CE

Informações que são mostradas na saída do comando: docker network ls

ID DADOS INFORMAÇÃO
01 NETWORK ID É o identificador único da rede Docker. Cada rede tem um ID associado que pode ser usado para identificá-la de forma única dentro do Docker.
02 NAME É o nome atribuído à rede. Pode ser um nome padrão (como bridge, host, none) ou um nome personalizado que foi definido durante a criação da rede.
03 DRIVER Define o tipo de driver de rede utilizado. Os drivers de rede determinam como os containers se conectam entre si.

Informações dois tipos de Drivers de Redes utilizados no Docker-CE

ID DADOS INFORMAÇÃO
01 bridge Rede padrão para containers no modo bridge, onde os containers em execução na mesma rede podem se comunicar.
02 host A rede do container é a mesma do host, ou seja, ele não cria uma interface de rede isolada.
03 overlay Usado para criar redes que se estendem por vários hosts Docker, útil para serviços em modo swarm.
04 macvlan Permite que os containers tenham seus próprios endereços MAC e façam parte da rede física.

Informações dos tipos de Escopo de Redes utilizados no Docker-CE

ID DADOS INFORMAÇÃO
01 local A rede está restrita ao host local.
02 global A rede pode ser usada em vários hosts Docker no caso de um cluster swarm.
#listando todas as redes padrão do Docker-CE 
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/ls/
#Documentação do Docker-CE: https://docs.docker.com/engine/network/
#opção do comando docker: network (Manage networks), ls (List networks)
docker network ls

03_ Criando (Create) Volumes (Volume) no Docker-CE

#criando volume local no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/volume/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/volume/create/
#Documentação do Docker-CE: https://docs.docker.com/engine/storage/volumes/
#opção do comando docker: volume (Manage volumes), create (Create a volume), website
#(Volume name)
docker volume create website

#listando os volumes criados no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/volume/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/volume/ls/
#Documentação do Docker-CE: https://docs.docker.com/engine/storage/volumes/
#opção do comando docker: volume (Manage volumes), ls (List volumes)
docker volume ls

04_ Criando (Create) Contêiner (Container) com o Volume (Volume) e Publicando (Publish) a Porta (Port) do Apache2 no Docker-CE

#criando o container do Ubuntu Apache2 Server localmente no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/run/
#Documentação do Docker-HUB: https://hub.docker.com/r/ubuntu/apache2
#opção do comando docker: container (Manage containers), run (Create and run a new container 
#from an image), -d --detach (Run container in background and print container ID), -i 
#--interactive (Keep STDIN open even if not attached), -t --tty (Allocate a pseudo-TTY), --name 
#website01 (Assign a name to the container), --volume (Bind mount a volume), -p --publish (Publish
#a container's port(s) to the host), ubuntu/apache2 (repository and imagem docker hub), /bin/bash
#(command bash/shell terminal)
#opção da contra barra (\): criar uma quebra de linha no terminal
docker container run -d -it --name website01 --volume website:/var/www/html --publish 80:80 \
ubuntu/apache2 /bin/bash

#listando todas as imagens de containers no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/image/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/image/ls/
#opção do comando docker: image (Manage images), ls (List images), -f --filter (Filter output based
#on conditions provided)
docker image ls --filter reference=ubuntu/apache2

#listando o container do Ubuntu Apache2 em execução no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/image/ls/
#opção do comando docker: container (Manage containers), ls (List containers), -a --all (Show all
#images (default hides intermediate images), --filter (Filter output based on conditions provided)
docker container ls -a --filter name=website01

#conectando no container do Ubuntu Apache2 Server em modo Interativo no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/attach/
#opção do comando docker: container (Manage containers), attach (Attach local standard input, output, 
#and error streams to a running container), website01 (Container Names or Container ID)
docker container attach website01

#verificando a versão da imagem do Ubuntu rodando no container do Docker-CE
cat /etc/os-release

#verificando o status do serviço do Apache2 Server na Imagem do Ubuntu
service apache2 status

#iniciando o serviço do Apache2 Server na Imagem do Ubuntu
service apache2 start

#verificando o status do serviço do Apache2 Server na Imagem do Ubuntu
service apache2 status

#verificando os processos do serviço do Apache2 Server na Imagem do Ubuntu
#opção do comando ps: -a (all processes except both session leaders), -u (userlist)
ps -aux

#verificando as informações do tráfego das interfaces de rede na Imagem do Ubuntu
cat /proc/net/dev

#verificando as informações de endereço de rede na Imagem do Ubuntu
#opção do redirecionador |: Conecta a saída padrão com a entrada padrão de outro comando
cat /etc/hosts | grep 172

#saindo do container do Ubuntu mais mantendo a imagem em execução (Atalho)
Ctrl + p + q (Mantenha pressionado o Ctrl e depois pressiona: p e depois: q para sair)

05_ Inspecionando (Inspect) o Contêiner (Container) da Imagem (Image) do Apache2 no Docker-CE

Informações dois tipos de Modos de Volumes do Docker-CE

ID DADOS INFORMAÇÃO
01 Modo z (minúsculo) Configura o volume para ser compartilhado entre múltiplos containers.
02 Modo Z (maiúsculo) Configura o volume para ser utilizado exclusivamente por um único container.
#inspecionando as informações de montagem no container do Ubuntu no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/inspect/
#Documentação do Docker-CE: https://docs.docker.com/engine/containers/resource_constraints/
#opção do comando docker: container (Manage containers), inspect (Display detailed information 
#on one or more containers), website01 (Container Names or Container ID)
#opção do redirecionador |: Conecta a saída padrão com a entrada padrão de outro comando
#opção do comando jq: .[]: Isso percorre cada container no resultado, mesmo que você tenha 
#especificado um único container, o comando inspect retorna uma lista, .Mounts[]: Acessa todos 
#os pontos de montagem (bind mounts, volumes, etc.) do container, select(.Type == "volume"): 
#Filtra para exibir apenas as montagens do tipo volume.
docker container inspect website01 | jq '.[] | .Mounts[] | select(.Type == "volume")'

#inspecionando as informações de rede no container do Ubuntu no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/inspect/
#Documentação do Docker-CE: https://docs.docker.com/engine/containers/resource_constraints/
#opção do comando docker: container (Manage containers), inspect (Display detailed information 
#on one or more containers), website01 (Container Names or Container ID)
#opção do redirecionador |: Conecta a saída padrão com a entrada padrão de outro comando
#opção do comando jq: .[0]: Acessa o primeiro elemento da lista retornada por docker container
#inspect, .NetworkSettings.Networks.bridge: Acessa diretamente as configurações da rede bridge, 
#que é onde as informações específicas sobre essa rede estão armazenadas.
docker container inspect website01 | jq '.[0].NetworkSettings.Networks.bridge'

#inspecionando as informações de portas no container do Ubuntu no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/inspect/
#Documentação do Docker-CE: https://docs.docker.com/engine/containers/resource_constraints/
#opção do comando docker: container (Manage containers), inspect (Display detailed information 
#on one or more containers), website01 (Container Names or Container ID)
#opção do redirecionador |: Conecta a saída padrão com a entrada padrão de outro comando
#opção do comando jq: .[0]: Acessa o primeiro elemento da lista retornada por docker container
#inspect, .NetworkSettings.Ports: Filtra diretamente as informações relacionadas às portas 
#expostas e mapeadas no container.
docker container inspect website01 | jq '.[0].NetworkSettings.Ports'

06_ Verificando as Interfaces de Rede criadas pelo Docker-CE no Ubuntu Server

#verificando todas as interfaces e endereço IPv4 no Ubuntu Server
sudo ifconfig

#verificando todas as interfaces e endereços IPv4 no Ubuntu Server
sudo ip address show

#verificando o redirecionamento da Porta padrão do Apache2
#opção do comando lsof: -n (network number), -P (port number), -i (list IP Address), -s (alone directs)
sudo lsof -nP -iTCP:'80' -sTCP:LISTEN

#Liberando (allow) e Logando Tudo (LOG-ALL) da Sub-rede 172.16.1.0/24 (FROM) acessar o 
#servidor (TO) do Apache2 Server na porta (PORT) 80 via protocolo TCP (PROTO TCP)
sudo ufw allow log-all from 172.16.1.0/24 to 172.16.1.30 port 80 proto tcp comment 'Liberando a sub-rede para acessar o Apache2'

#Verificando as Regras Detalhadas padrão do UFW em modo Verboso
sudo ufw status verbose

#utilizar os navegadores para testar o acesso ao Apache2 
firefox ou google chrome: http://endereço_ipv4_ubuntuserver

07_ Analisando as Configurações de Pontes de Rede (Bridges) e Regras de Firewall (IPTables) do Docker-CE

Informações que são mostradas na saída do comando: brctl show

ID DADOS INFORMAÇÃO
01 bridge name É o nome da bridge (ponte de rede) que foi criada no sistema. A bridge é uma interface virtual que conecta várias interfaces de rede, permitindo que pacotes sejam trocados entre elas, como se estivessem em um switch.
02 bridge id Identificador único da bridge no formato hexadecimal, que é composto pelo endereço MAC da interface da bridge e uma prioridade (usada STP).
03 STP enabled Indica se o Spanning Tree Protocol (STP) está habilitado ou não. O STP é um protocolo que previne loops de rede em bridges.
04 Interfaces Lista todas as interfaces de rede conectadas à bridge. Essas interfaces podem ser físicas ou virtuais e participam da troca de pacotes na bridge.
#verificando as informações de Bridge do Docker-CE
sudo brctl show

OBSERVAÇÃO MUITO IMPORTANTE: NESSE CURSO ESTOU TRABALHANDO COM A SEGURANÇA DE REGRAS DE FIREWALL UTILIZANDO O UFW (Uncomplicated Firewall) QUE É UM FRAMEWORKS DO NETFILTER QUE USO O IPTABLES PARA A CRIAÇÃO DAS REGRAS DE FIREWALL, O DOCKER-CE TAMBÉM UTILIZA ESSE RECURSOS PARA SE COMUNICAR COM OS CONTAINERS.

Tabelas Filter utilizadas pelo Docker-CE (NESSE CENÁRIO):

  1. Chain FORWARD (policy DROP)
  2. Chain DOCKER (1 references)
  3. Chain DOCKER-ISOLATION-STAGE-1 (1 references)
  4. Chain DOCKER-ISOLATION-STAGE-2 (1 references)
  5. Chain DOCKER-USER (1 references)
#listando todas as regras de Firewall das Tabelas do IPTables no Ubuntu Server
#opção do comando iptables: -L (list all chain), -n (numeric output)
sudo iptables -L -n

#listando todas as regras de Firewall das Tabelas de NAT do IPTables no Ubuntu Server
#opção do comando iptables: -L (list all chain), -n (numeric output), -t (table)
sudo iptables -L -n -t nat

#Tabelas NAT (Network Address Translation) utilizadas pelo Docker-CE (NESSE CENÁRIO)
#opção do comando iptables: -t (table), -L (list all chain), -n (numeric output)
#Chain PREROUTING (policy ACCEPT)
sudo iptables -t nat -L PREROUTING -n

#Chain OUTPUT (policy ACCEPT)
sudo iptables -t nat -L OUTPUT -n 

#Chain POSTROUTING (policy ACCEPT)
sudo iptables -t nat -L POSTROUTING -n 

#Chain DOCKER (2 references)
sudo iptables -t nat -L DOCKER -n 

08_ Criando (Create) Redes (Network) do Tipo Ponte (Bridge) no Docker-CE

#criando redes em modo Bridge no Docker-CE 
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/create/
#Documentação do Docker-CE: https://docs.docker.com/engine/network/
#opção do comando docker: network (Manage networks), create (Create a network), -d --driver
#(Driver to manage the Network), bridge (default)
docker network create vaamonde --driver bridge

#listando as redes padrão do Docker-CE 
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/ls/
#Documentação do Docker-CE: https://docs.docker.com/engine/network/
#opção do comando docker: network (Manage networks), ls (List networks), -f --filter (Provide
#filter values)
docker network ls --filter name=vaamonde

#inspecionando as informações da rede em modo Bridge no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/inspect/
#opção do comando docker: network (Manage networks), inspect (Display detailed information
#on one or more networks), vaamonde (network)
docker network inspect vaamonde

09_ Criando (Create) Contêiner (Container) com o Volume (Volume), Rede (Network) e Publicando (Publish) a Porta (Port) do NGINX no Docker-CE

#criando o container do Ubuntu NGINX Server localmente no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/run/
#Documentação do Docker-HUB: https://hub.docker.com/r/ubuntu/nginx
#opção do comando docker: container (Manage containers), run (Create and run a new container 
#from an image), -d --detach (Run container in background and print container ID), -i 
#--interactive (Keep STDIN open even if not attached), -t --tty (Allocate a pseudo-TTY), --name 
#website01 (Assign a name to the container), --network (Connect a container to a network) --volume 
#(Bind mount a volume), -p --publish (Publish a container's port(s) to the host), ubuntu/nginx 
#(repository and imagem docker hub), /bin/bash (command bash/shell terminal)
#opção da contra barra (\): criar uma quebra de linha no terminal
docker container run -d -it --name website02 --volume website:/var/www/html --network vaamonde \
--publish 81:80 ubuntu/nginx /bin/bash

#listando o container do Ubuntu NGINX em execução no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/image/ls/
#opção do comando docker: container (Manage containers), ls (List containers), -a --all (Show all
#images (default hides intermediate images), --filter (Filter output based on conditions provided)
docker container ls -a --filter name=website02

#conectando no container do Ubuntu NGINX Server em modo Interativo no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/attach/
#opção do comando docker: container (Manage containers), attach (Attach local standard input, output, 
#and error streams to a running container), website02 (Container Names or Container ID)
docker container attach website02

#verificando o status do serviço do NGINX Server na Imagem do Ubuntu
service nginx status

#iniciando o serviço do NGINX Server na Imagem do Ubuntu
service nginx start

#verificando o status do serviço do NGINX Server na Imagem do Ubuntu
service nginx status

#verificando os processos do serviço do NGINX Server na Imagem do Ubuntu
#opção do comando ps: -a (all processes except both session leaders), -u (userlist)
ps -aux

#verificando as informações do tráfego das interfaces de rede na Imagem do Ubuntu
cat /proc/net/dev

#verificando as informações de endereço de rede na Imagem do Ubuntu
#opção do redirecionador |: Conecta a saída padrão com a entrada padrão de outro comando
cat /etc/hosts | grep 172

#saindo do container do Ubuntu mais mantendo a imagem em execução (Atalho)
Ctrl + p + q (Mantenha pressionado o Ctrl e depois pressiona: p e depois: q para sair)

#verificando o redirecionamento da Porta padrão do NGINX
#opção do comando lsof: -n (network number), -P (port number), -i (list IP Address), -s (alone directs)
sudo lsof -nP -iTCP:'81' -sTCP:LISTEN

#Liberando (allow) e Logando Tudo (LOG-ALL) da Sub-rede 172.16.1.0/24 (FROM) acessar o 
#servidor (TO) do NGINX Server na porta (PORT) 81 via protocolo TCP (PROTO TCP)
sudo ufw allow log-all from 172.16.1.0/24 to 172.16.1.30 port 81 proto tcp comment 'Liberando a sub-rede para acessar o NGINX'

#Verificando as Regras Detalhadas padrão do UFW em modo Verboso
sudo ufw status verbose

OBSERVAÇÃO IMPORTANTE: OBSERVER A FALHA DA PÁGINA DO UBUNTU EM RELAÇÃO AO LOGO QUANDO VOCÊ ACESSAR A PORTA DO NGINX, O ERRO ESTÁ RELACIONADO AO CAMINHO: icons/ubuntu-logo.png QUE NÃO TEM NO VOLUME CRIADO, MAIS O NGINX ESTÁ LENDO A PÁGINA: index.html DO NOSSO VOLUME.

#utilizar os navegadores para testar o acesso ao NGINX 
firefox ou google chrome: http://endereço_ipv4_ubuntuserver:81

10_ Removendo (RM) Volumes (Volume), Contêiners (Container), Imagens (Image) e Redes (Network) no Docker-CE

#verificando todos os status dos containers em execução no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/ls/
#opção do comando docker: container (Manage containers), ls (List containers), -a --all (Show 
#all images (default hides intermediate images)
docker container ls -a

#removendo o container do Ubuntu e do CentOS no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/container/rm/
#opção do comando docker: container (Manage containers), rm (Remove one or more containers),
#-f --force (Force the removal of a running container), website01 website02 (Container Names
# or ID)
docker container rm -f website01 website02

#listando os volumes criados no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/volume/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/volume/ls/
#Documentação do Docker-CE: https://docs.docker.com/engine/storage/volumes/
#opção do comando docker: volume (Manage volumes), ls (List volumes)
docker volume ls

#limpando o volume do Website no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/volume/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/volume/rm/
#opção do comando docker: volume (Manage volumes), rm (Remove one or more volumes), -f 
#--force (Force the removal of one or more volumes)
docker volume rm -f website

#listando todas as imagens de containers no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/image/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/image/ls/
#opção do comando docker: image (Manage images), ls (List images)
docker image ls

#removendo as imagens do Ubuntu Apache2 e NGINX localmente no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/image/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/image/rm/
#opção do comando docker: images (List all imagens docker), rm (Remove one or more images), 
#-f --force (Force removal of the image), ubuntu/apache2 ubuntu/nginx (imagem docker)
docker image rm -f ubuntu/apache2 ubuntu/nginx

#listando todas as redes do Docker-CE 
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/ls/
#Documentação do Docker-CE: https://docs.docker.com/engine/network/
#opção do comando docker: network (Manage networks), ls (List networks)
docker network ls

#removendo a rede vaamonde do Docker-CE 
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/rm/
#Documentação do Docker-CE: https://docs.docker.com/engine/network/
#opção do comando docker: network (Manage networks), rm Remove one or more networks), -f
#--force (Do not error if the network does not exist), vaamonde (Network Name or ID)
docker network rm -f vaamonde

#limpando todas as redes no Docker-CE
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/
#Documentação do Docker-CE: https://docs.docker.com/reference/cli/docker/network/prune/
#opção do comando docker: network (Manage network), prune (Remove all unused networks)
#OBSERVAÇÃO IMPORTANTE: MUITO CUIDADO NA HORA DE USAR ESSA OPÇÃO EM SERVIDORES DE PRODUÇÃO
#QUE ESTÁ RODANDO PRINCIPALMENTE O PORTAINER.
docker network prune
  WARNING! This will remove all custom networks not used by at least one container.
  Are you sure you want to continue? [y/N] y

#Verificando as Regras Detalhadas padrão do UFW em modo Numerado
sudo ufw status numbered

#Removendo (DELETE) a Regra (RULES) de Acesso ao Apache2 (9) do Docker-CE
sudo ufw delete 9
Deleting:
 allow log-all from 172.16.1.0/24 to 172.16.1.30 port 80 proto tcp comment 'Liberando a sub-rede para acessar o Apache2'
Proceed with operation (y|n)? y <Enter>

#Verificando as Regras Detalhadas padrão do UFW em modo Numerado
sudo ufw status numbered

#Removendo (DELETE) a Regra (RULES) de Acesso ao NGINX (9) do Docker-CE
sudo ufw delete 9
Deleting:
 allow log-all from 172.16.1.0/24 to 172.16.1.30 port 81 proto tcp comment 'Liberando a sub-rede para acessar o NGINX'
Proceed with operation (y|n)? y <Enter>

========================================DESAFIOS=========================================

#11_ DESAFIO-01: PESQUISAR NO DOCKER-HUB A IMAGEM DE CONTAINER DO: httpd EXECUTAR TODOS OS PROCEDIMENTOS DAS ETAPAS: 01 ATÉ 10 UTILIZANDO ESSA IMAGEM E ADICIONANDO NO COMANDO: docker container create A OPÇÃO: --name COM O SEGUINTE NOME: site01 (SEU PRIMEIRO NOME TUDO EM MINÚSCULO SEM ACENTO): LEIA A DOCUMENTAÇÃO OFICIAL PARA MONTAR O VOLUME DE FORMA CORRETA.

#12_ DESAFIO-02: PESQUISAR NO DOCKER-HUB A IMAGEM DE CONTAINER DO: nginx EXECUTAR TODOS OS PROCEDIMENTOS DAS ETAPAS: 01 ATÉ 10 UTILIZANDO ESSA IMAGEM E ADICIONANDO NO COMANDO: docker container create A OPÇÃO: --name COM O SEGUINTE NOME: site02 (SEU SOBRENOME TUDO EM MINÚSCULO SEM ACENTO): LEIA A DOCUMENTAÇÃO OFICIAL PARA MONTAR O VOLUME DE FORMA CORRETA.

=========================================================================================

OBSERVAÇÃO IMPORTANTE: COMENTAR NO VÍDEO DO BÁSICO DE DOCKER-CE SE VOCÊ CONSEGUIU FAZER A IMPLEMENTAÇÃO COM A SEGUINTE FRASE: Básico de Network dos Containers de Docker-CE realizado com sucesso!!! #BoraParaPrática

COMPARTILHAR O SELO DO DESAFIO NAS SUAS REDES SOCIAIS (LINKEDIN, FACEBOOK, INSTAGRAM) MARCANDO: ROBSON VAAMONDE COM AS HASHTAGS E COPIANDO O CONTEÚDO DO DESAFIO ABAIXO:

LINK DO SELO: https://github.com/vaamonde/ubuntu-2404/blob/main/selos/06-network-docker.png

#boraparapratica #boraparaprática #vaamonde #robsonvaamonde #procedimentosemti #ubuntuserver #ubuntuserver2404 #desafiovaamonde #desafioboraparapratica #desafiodocker #desafiodockerce #desafionetwork