Docker Network
Содержание
Docker Bridge
За замовчуванням створюється мережа цього типу. Треба пробросувати порти в цьому типу мережі якщо треба доступ зовні (параметр -p 80:80). Також можна під'єднатися локально.
docker0: 172.17.0.0/16
docker run nginx -p 80:80
В даному типі контейнери можуть мати зв'язок тільки через IP адреси, яки видаються через dhcp докером.
Можливо створити мережу. Це робиться так:
docker network create --drive bridge NETNAME, де: --drive - це тип мережі, в даному випадку це тип BRIDGE NAME - це назва мережі.
Вже є мережа з назвою "default" вона створюється автоматично, та контейнер буде в неї, якщо не вказати при запуску контейнера, ось так: docker run --net NAME nginx Якщо створювати контейнери не в default мережі, то контейнери можуть звертатися один до одного по імені (параметр --name при створювані). Однак між собою різні мережі не можуть мати зв'язок. Звісно якщо не робити його якимось сторонніми методами.
Docker Host
В цьому типу, контейнер отримує IP адресу хоста на якому він запускається. Треба указати тип мережі --network=host
Для цього типу треба указати параметр --network=host
docker run nginx --network=host
Створити мережу цього типу можливо так: docker network create --drive host NETNAME.
В цьому типі контейнери та хост можуть мати з'єднання між собою, вони використовують для цього IP адресу хоста.
В цьому типу може бути тільки одна мережа.
none
В цьому випадку не буде у контейнера мережевого інтерфейсу. Під'єднатися можливо тільки локально (параметр --it). docker run nginx --network=host
macvlan
В цьому типу у кожного контейнера свої мак адреси. IP адреси в цих контейнерах будуть унікальні для кожного контейнера.
Створити такий тип можна за допомогою команди:
docker network clreate -d macvlan --subnet 192.168.1.0/24 --gateway 192.168.1.1 --ip-range 192.168.1.2/32 -o parent=eth1 myNETmacvlan
де, -d скорочено від --drive (тип) в даному випадку це macvlan --subnet мережа з маскою з якої буде видаватися IP --gateway шлюз за замовченням --ip-range діапазон з якого буде присвоєна адреса саме цьому контейнеру -o parent=eth1 який базовий інтерфейс хоста на якому запускається контейнера myNETmacvlan назва мережі
ipvlan
В цьому типу у кожного контейнера буде один і той же MAC адрес, а IP адреси контейнерів будуть - різні.
overlay
Тут щось має бути
Команди роби з мережами
Подивитись які є мережі в Docker
docker network ls
Подивитись що за мережа
docker inspect <name of net або її ID (з docker network ls)>
Створити сої IP адреси можна так:
docker network create -d bridge --subnet 192.168.1.0/24 --gateway 192.168.1.1 myNet
де, параметр -d це скорочено від --drive --subnet це яка саме буде мережа --gateway це шлюз для цієї мережі myNet це назва мережі
Видалити мережі можна командою
docker network rm <назва або ID (з docker network ls)> можна вказати де кілька через пробіл.
Якщо треба додати мережу у контейнера, це можна зробити командою
docker network connect myNet container де, myNet це назва мережі до якої треба під'єднатися. container1 - це назва контейнеру.
Щоб видалити мережу у контейнера
docker network disconnect <ID або назва якщо є> <container> де, ID це NetworkID з "docker inspect ContainerName" container - це назва контейнеру