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


