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

Материал из Iknow
Перейти к навигации Перейти к поиску
 
(не показано 19 промежуточных версий этого же участника)
Строка 1: Строка 1:
#
+
 
# Елемент нумерованого списку
 
 
==Docker Bridge==
 
==Docker Bridge==
  
test
+
За замовчуванням створюється мережа цього типу. Треба пробросувати порти в цьому типу мережі якщо треба доступ зовні (параметр -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==
 
==Docker Host==
  
test1
+
В цьому типу, контейнер отримує IP адресу хоста на якому він запускається. Треба указати тип мережі --network=host
 +
 
 +
Для цього типу треба указати параметр --network=host
 +
 
 +
docker run nginx --network=host
 +
 
 +
Створити мережу цього типу можливо так:
 +
docker network create --drive host NETNAME.
 +
 
 +
В цьому типі контейнери та хост можуть мати з'єднання між собою, вони використовують для цього IP адресу хоста.
 +
 
 +
  В цьому типу може бути тільки одна мережа.
  
 
==none==
 
==none==
  
test2
+
В цьому випадку не буде у контейнера мережевого інтерфейсу. Під'єднатися можливо тільки локально (параметр --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 - це назва контейнеру

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