Gerenciamento de redes Docker

Neste artigo vamos aprender a gerencias redes docker.

A primeira coisa que devemos saber ao gerencias redes docker é, quais redes existem no meu ambiente?

O comando docker network ls, lista as redes em nosso host:

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
d64108ab7383        bridge              bridge              local
0d8a02f7fa4d        docker_gwbridge     bridge              local
ad7259f792a2        host                host                local
dc163cb5ce6c        none                null                local

Para cria uma nova rede utilizamos o comando docker network create <NOME_DA_REDE> o resultado deste comando será o ID da rede criada:

$ docker network create my_app_network
96979240f388b111423cb8a53e110f1f7e9608ade23335847085dddd008a7d00

Quando você estiver realizando o troubleshooting de conectividade entre containers, é essencial que você saiba inspecionar como está configurada a sua rede. Para fazer isso utiliza o comando docker network inspect <NOME_OU_ID_DA_REDE>, é possível visualizar os containers conectados nessa rede, qual range de IP ela está utilizando, entre outros informações:

$ docker network inspect my_app_network
[
    {
        "Name": "my_app_network",
        "Id": "96979240f388b111423cb8a53e110f1f7e9608ade23335847085dddd008a7d00",
        "Created": "2020-03-16T18:15:39.5299355Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

Observe qua não definimos qual range de rede seria utilizado, isto é criado automaticamente, entretanto se você precisar definir um range de rede específico pode utilizar os parâmetros subnetgatewaydriver se precisar mudar o driver a ser utilizado:

$ docker network create network_custom --subnet 192.168.130.0/24 --gateway 192.168.130.1
03b44f7706c278b61674f9895391e958f09dce5548dd10b2d99daca3441252ea

Podemos identificar agora que a nova rede está com um range de rede que definimos:

$ docker network inspect network_custom
[
    {
        "Name": "network_custom",
        "Id": "03b44f7706c278b61674f9895391e958f09dce5548dd10b2d99daca3441252ea",
        "Created": "2020-03-16T18:41:16.5598928Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.130.0/24",
                    "Gateway": "192.168.130.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

Para remover uma rede, utiliza o comando:

$ docker network rm network_custom
network_custom

Ou utiliza o comando prune, que irá remover todas as redes que não estão associadas e nenhum container: 

$ docker network prune
WARNING! This will remove all networks not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Networks:
network_custom4
docker_gwbridge
network_custom3
network_custom2
my_app_network

Com isso você consegue administrar as redes do seu ambiente docker.

Espero que tenham gostado e  até a próxima!

Deixe uma resposta