Docker Network: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
Строка 77: | Строка 77: | ||
docker network rm <назва або ID (з docker network ls)> можна вказати де кілька через пробіл. | docker network rm <назва або ID (з docker network ls)> можна вказати де кілька через пробіл. | ||
− | Якщо треба | + | Якщо треба додати мережу у контейнера, це можна зробити командою |
docker network connect myNet container | docker network connect myNet container | ||
де, myNet це назва мережі до якої треба під'єднатися. | де, myNet це назва мережі до якої треба під'єднатися. | ||
container1 - це назва контейнеру. | container1 - це назва контейнеру. | ||
+ | |||
+ | Щоб видалити мережу у контейнера | ||
+ | |||
+ | docker network disconnect <ID> <container> | ||
+ | де, ID це ID з "docker inspect ContainerName" | ||
+ | container - це назва контейнеру |
Версия 16:45, 23 января 2024
Содержание
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 адреси в цих контейнерах будуть унікальні для кожного контейнера.
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 це ID з "docker inspect ContainerName" container - це назва контейнеру