4. Сети/networks в докере

Сети/networks в докере

статья писалась на основе видео от RomNero https://www.youtube.com/@RomNero
изображения в данной счтатье являются скриншотами из видео.

 

Bridge – мост между локальным сервером и сетью интернет
Host – сеть для локального сервера, доступ через интернет возможен через ip адрес сервера
None – изолированные контейнеры без сети (удобно для проверки и отладки контейнеров)

в случае с bridge – можно использовать DNS имена (обращаться к контейнеорам не по IP) если работать с собственной (не default сетью)

HOST и NONE может быть только 1й сетью в системе (т.е. нельзя создать 2а host или 2 none)

macvlan – для каждого контейнера создается виртуальная сетевая карта со своим ip и mac адресом
ipvlan – все контейнеры имеют одинаковый mac адрес, но разные ip

посмотреть список сетей
ip -a

посмотреть список сетей докера
docker network ls

создать сеть (bridge по умолчанию)
docker network create NetName
или
docker network create –driver bridge NetName
или
docker network create -d bridge NetName

создать сеть host
docker network create –driver host NetName
или
docker network create -d host NetName

сеть host может быть только 1 на сервере, поэтому появится ошибка

создать сеть none
docker network create –driver null NetName
или
docker network create -d null NetName

сеть none может быть только 1 на сервере, поэтому появится ошибка

создать сеть macvlan
docker network create –driver macvlan NetName
или
docker network create -d macvlan NetName

получение информации о сети
docker network inspect NetName

полное указание сети (с подсетью и gateway)
docker network create –driver bridge –subnet 192.168.10.0/24 –gateway 192.168.10.1 NetName

удаление сети
docker network rm NetName

Запуск контейнера в определенной сети
docker run -it -name ContainerName –net NetName ContainerRepositiry /bin/bash

пример:
docker network create MyNet1
docker run -it -name myNGINX –net MyNet1 nginx /bin/bash

Подключить контейнер к определенной сети
docker network connect NetName ContainerName

пример:
docker network connect MyNet1 myNGINX

если контейнер до этого был запущен – он будет сразу в 2х сетях

Отключить контейнер от 1й сети
docker inspect ContainerName
скопировать поле NetworkID (код много букв и цифр) той сети от которой надо отключиться
после
docker network disconnect NetworkID ContainerName

этот механизм позволяет реализовать работу proxy сервера с docker

При создании сети создается DHCP сервер и раздается ip адрес

Указать ip принудительно можно через команду –ip-range и указав спаренную сетевую карту
-o parent=EthName
пример:
docker network create –driver macvlan –subnet 192.168.100.0/24 –gateway 192.168.10.1 –ip-range 192.168.100.1/32 -o parent=EthName NetName

Изменить ip контейнеру (в macvlan сети) можно через –ip 192.168.10.101
если ip адрес указан принудительно – сеть не назначает и не проверяет соответствие этого ip адреса диапазону

Leave a Reply

Your email address will not be published. Required fields are marked *