5.1 İstifadəçi şəbəkələrinin əsas növləri
Docker-də istifadəçi şəbəkələri konteynerlər arasında şəbəkə əlaqəsini qurmaq və idarə etmək üçün çevik imkanlar təqdim edir. Onlar konteynerləri izolyasiya etməyə, qarşılıqlı əlaqəni təşkil etməyə və mürəkkəb şəbəkə topologiyaları yaratmağa imkan verir. Bu mövzuda Docker-də istifadəçi şəbəkələrini necə yaratmaq və tənzimləmək, həmçinin onların istifadəsi ilə bağlı nümunələri nəzərdən keçirəcəyik.
İstifadəçi şəbəkələrinin əsas növləri
Docker bir neçə tip istifadəçi şəbəkəsini dəstəkləyir, hər biri müxtəlif istifadə ssenariləri üçün öz xüsusiyyətlərinə malikdir:
-
Bridge (körpü şəbəkələri)
: Bir hostdakı konteynerlər arasında izolyasiya və əlaqə təmin edir. -
Overlay (overley şəbəkələri)
: Docker Swarm ya da Kubernetes klasterində müxtəlif hostlarda işləyən konteynerlər arasında əlaqə üçün istifadə olunur. -
Macvlan
: Konteynerlərin hostun fiziki şəbəkə interfeysindən birbaşa istifadə etməyə imkan verir, bu yüksək performans tələbləri olan şəbəkə tətbiqləri üçün faydalı ola bilər. Həmçinin köhnə arxitekturalar üçün istifadə olunur, harada ki şəbəkə mac-adresinə bağlanma mövcuddur. Bu tip şəbəkə hər bir qoşulmuş konteynerə mac-adres təyin etməyə imkan verir. -
Host (host şəbəkələri)
: Konteynerlər hostun şəbəkə stekindən istifadə edir, bu da şəbəkə virtualizasiyası ilə bağlı xərcləri aradan qaldırır, lakin izolyasiyanı azaldır.
5.2 Körpü (bridge) şəbəkələrinin yaradılması və istifadəsi
Körpü (bridge) şəbəkələri ən çox yayılmış istifadəçi şəbəkəsi tiplərindən biridir və bir hostda konteynerlərin izolasiya edilməsi üçün istifadə olunur. Eyni bridge şəbəkəsinə qoşulmuş konteynerlər bir-biri ilə IP ünvanları və host adları vasitəsilə əlaqə qura bilərlər.
Xüsusi bridge şəbəkəsi
-nin yaradılması
Xüsusi bridge şəbəkəsi
yaratmaq üçün docker network create
əmrindən istifadə edin:
docker network create --driver bridge my_bridge_network
Konteynerlərin xüsusi şəbəkədə işə salınması
Konteynerləri yaradılmış şəbəkəyə qoşaraq işə salın:
docker run -d --name container1 --network my_bridge_network nginx
docker run -d --name container2 --network my_bridge_network busybox sleep 1000
Konteynerlər arasında əlaqələrin yoxlanılması
Konteynerlər arasında əlaqəni yoxlamaq üçün ping komandasından istifadə edə bilərsiniz:
docker exec container2 ping -c 4 container1
Əgər konteynerlər my_bridge_network
şəbəkəsinə düzgün qoşulmuşdursa, ping əmri uğurlu olacaq.
5.3 Docker Compose
-də istifadəçi şəbəkələri
Docker Compose
-də istifadəçi şəbəkələrinin istifadəsi nümunələri
Docker Compose çox konteynerli tətbiqlər üçün şəbəkələrin yaradılmasını və idarə olunmasını asanlaşdırır. Siz docker-compose.yml
faylında istifadəçi şəbəkələrini təyin edə bilərsiniz.
docker-compose.yml
faylının nümunəsi:
version: '3.8'
services:
web:
image: nginx:latest
networks:
- my_bridge_network
app:
image: myapp:latest
networks:
- my_bridge_network
networks:
my_bridge_network:
driver: bridge
Docker Compose işə salın:
docker compose up -d
Bu nümunədə hər iki servis (web və app) my_bridge_network
adlı istifadəçi şəbəkəsinə qoşulmuşdur.
5.4 macvlan
şəbəkələrinin qurulması və istifadəsi
macvlan
şəbəkələri konteynerlərə hostun fiziki şəbəkə interfeysindən birbaşa istifadə etməyə imkan verir, bu da şəbəkə performansına yüksək tələbləri olan tətbiqlər üçün faydalı ola bilər.
macvlan
şəbəkəsinin yaradılması
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=eth0 my_macvlan_network
macvlan
şəbəkəsində konteynerlərin işə salınması
docker run -d --name container1 --network my_macvlan_network nginx
docker run -d --name container2 --network my_macvlan_network busybox sleep 1000
5.5 Docker Compose
-da istifadə nümunələri
Siz həmçinin macvlan
şəbəkələrini Docker Compose
-da istifadə edə bilərsiniz. Məsələn:
version: '3.8'
services:
web:
image: nginx:latest
networks:
- my_macvlan_network
networks:
my_macvlan_network:
driver: macvlan
driver_opts:
parent: eth0
ipam:
config:
- subnet: 192.168.1.0/24
gateway: 192.168.1.1
Docker Compose
-u işə salın:
docker compose up -d
5.6 Mikrosərvislər üçün şəbəkələrin istifadəsinə nümunə
Gəlin bir nümunəyə baxaq: burada bizim frontend, backend və məlumat bazamız var, bunları müxtəlif şəbəkələrdə təcrid etməliyik, amma onların qarşılıqlı əlaqəsini təmin etməliyik.
docker-compose.yml
faylı
version: '3.8'
services:
frontend:
image: myfrontend:latest
networks:
- front-tier
- back-tier
backend:
image: mybackend:latest
networks:
- back-tier
- db-tier
database:
image: postgres:latest
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
networks:
- db-tier
networks:
front-tier:
driver: host
back-tier:
driver: bridge
db-tier:
driver: bridge
Docker Compose
işə salın:
docker compose up -d
Bu nümunədə:
- Frontend servisi
front-tier
vəback-tier
şəbəkələrinə qoşulub, bu da ona həm xarici müştərilərlə, həm də backend ilə qarşılıqlı əlaqə qurmağa imkan verir. - Backend servisi
back-tier
vədb-tier
şəbəkələrinə qoşulub, bu da ona frontend və məlumat bazası ilə qarşılıqlı əlaqə qurmağa imkan verir. -
database
servisidb-tier
şəbəkəsinə qoşulub ki, bu da məlumat bazasını xarici girişdən təcrid edir.
GO TO FULL VERSION