Сети/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 адреса диапазону

