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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *