Docker Network: различия между версиями

Материал из Iknow
Перейти к навигации Перейти к поиску
 
(не показаны 3 промежуточные версии этого же участника)
Строка 44: Строка 44:
  
 
В цьому типу у кожного контейнера свої мак адреси. IP адреси в цих контейнерах будуть унікальні для кожного контейнера.
 
В цьому типу у кожного контейнера свої мак адреси. 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==
 
==ipvlan==
Строка 77: Строка 88:
 
   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 це NetworkID з "docker inspect ContainerName"
 +
  container - це назва контейнеру

Текущая версия на 17:01, 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 адреси в цих контейнерах будуть унікальні для кожного контейнера.

Створити такий тип можна за допомогою команди:

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 - це назва контейнеру