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 subnet, gateway e driver 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!