8.1 Şəbəkə problemlərinin diaqnostikası üçün əsas addımlar
Docker-də şəbəkə problemləri müxtəlif səbəblərdən yarana bilər, buraya şəbəkələrin yanlış konfiqurasiyası, DNS problemləri, IP ünvanlarının konfliktləri və digər səbəblər daxildir. Bu mühazirədə, Docker-də şəbəkə problemlərinin diaqnostikası və həlli üsullarını nəzərdən keçirəcəyik.
Şəbəkə problemlərinin diaqnostikası üçün əsas addımlar:
- Kontainerlərin və şəbəkələrin vəziyyətini yoxlamaq
- Kontainerlərin daxilində şəbəkə utilitlərini istifadə etmək
- Docker-in və şəbəkə fayllarının konfiqurasiyasını yoxlamaq
- Docker-in sistem jurnallarını yoxlamaq
- Docker-in şəbəkə əmrlərindən istifadə etmək
8.2 Konteynerlərin və şəbəkələrin vəziyyətinin yoxlanılması
Şəbəkə problemlərinin diaqnostikasında ilk addım konteynerlərin və şəbəkələrin vəziyyətini yoxlamaqdır.
Konteynerlərin vəziyyətinin yoxlanılması
Bütün işləyən konteynerləri göstərmək üçün docker ps komandasından istifadə edin:
docker ps
Əgər konteynerlər işləmir, bu Docker-in özü ilə və ya konteynerlərin konfiqurasiyası ilə bağlı problemlərə işarə edə bilər.
Şəbəkələrin yoxlanılması
docker network ls komandası Docker-də yaradılmış bütün şəbəkələri göstərir:
docker network ls
Lazım olan şəbəkənin mövcudluğuna və konteynerlərin həmin şəbəkəyə qoşulduğuna əmin olun.
8.3 Kontainerlərin daxilində şəbəkə utilitlərindən istifadə
ping, curl, netcat və nslookup kimi şəbəkə utilitləri, kontainerlərin daxilindəki problemləri diaqnostika etməyə kömək edə bilər.
ping nümunə istifadəsi
Kontainera qoşulun və digər bir kontainer və ya servislə bağlantını yoxlayın:
docker exec -it <container_name> ping <target_container_name_or_ip>
curl nümunə istifadəsi
Kontainer daxilində veb-servisin əlçatanlığını yoxlayın:
docker exec -it <container_name> curl http://<target_service>
nslookup nümunə istifadəsi
Kontainer adlarının DNS həllini yoxlayın:
docker exec -it <container_name> nslookup <target_container_name>
nc host port nümunə istifadəsi
nc host port komandası şəbəkə bağlantılarını tənzimləmək və diaqnostika üçün istifadə olunur. Bu komanda vasitəsilə verilmiş host ilə müəyyən port üzərindən bağlantı qurulur.
docker exec -it <container_name> nc -zv 192.168.1.1 22
8.4 Docker və şəbəkə fayllarının konfiqurasiyasını yoxlamaq
Docker və şəbəkə fayllarının yanlış konfiqurasiyası şəbəkə problemlərinə səbəb ola bilər.
docker-compose.yml faylının yoxlanılması
Əmin olun ki, docker-compose.yml faylı düzgün qurulub və bütün şəbəkələr, servislər və portlar düzgün qeyd olunub.
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
networks:
- webnet
db:
image: postgres:latest
ports:
- "5432:5432"
networks:
- webnet
networks:
webnet:
driver: bridge
/etc/docker/daemon.json faylının yoxlanılması
Əgər dəyişdirilibsə, Docker Daemon konfiqurasiyasını yoxlayın:
{
"dns": ["8.8.8.8", "8.8.4.4"],
"fixed-cidr": "192.168.1.0/24"
}
8.5 Docker sistem jurnallarının yoxlanması
Docker sistem jurnalları şəbəkə xətaları və problemləri haqqında faydalı məlumatlar ehtiva edə bilər.
Docker jurnallarına baxış
systemd ilə sistemlərdə Docker jurnallarını görmək üçün journalctl komandasından istifadə edin:
journalctl -u docker.service
Konteynerlərin loglarına baxış
Konteynerlərin logları da şəbəkə problemlərini diaqnostika etməkdə köməkçi ola bilər:
docker logs <container_name>
8.6: Docker şəbəkə komandalarından istifadə
Docker, şəbəkələrin diaqnostikası və idarə edilməsi üçün komandalar təqdim edir, məsələn docker network inspect və docker network connect.
docker network inspect komandası
Bu komanda şəbəkə haqqında ətraflı məlumat əldə etməyə imkan verir, burada qoşulmuş konteynerlər və IPAM ayarları da daxil edilir.
docker network inspect <network_name>
docker network inspect komandası üzrə nəticə nümunəsi
[
{
"Name": "webnet",
"Id": "e5e5e1b1a3e5",
"Created": "2021-01-01T00:00:00.000000000Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Containers": {
"container_id": {
"Name": "web",
"EndpointID": "6c52f8c75c1e",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
docker network connect komandası
Əgər konteyner şəbəkəyə düzgün qoşulmayıbsa, onu əl ilə qoşmaq olar:
docker network connect <network_name> <container_name>
8.7 Problemlərin diaqnostikası və həll edilməsi nümunələri
Nümunə 1: DNS domen adını IP-yə çevirmə problemləri
Əgər konteynerlər digər konteynerlərin host adlarını çevirə bilmirsə, DNS parametrlərini yoxlayın:
docker-compose.yml-də DNS parametrlərinin yoxlanması:
version: '3.8'
services:
web:
image: nginx:latest
dns:
- 8.8.8.8
Konteyner daxilində DNS-in yoxlanması:
docker exec -it <container_name> cat /etc/resolv.conf
Nümunə 2: Servislərə çıxış problemləri
Əgər konteynerlər digər hostlardakı servislərə çıxış edə bilmirsə:
Açılmış portların yoxlanması:
docker ps
Firewall qaydalarının yoxlanması:
Gərəkli portların firewall qaydaları tərəfindən bloklanmadığından əmin olun.
Nümunə 3: IP ünvanı konflikti
Əgər konteynerlər arasında və ya host ilə IP ünvanı konflikti varsa:
Şəbəkə subnetinin yoxlanması:
docker network inspect <network_name>
Subnetin dəyişdirilməsi:
docker network create --subnet=192.168.2.0/24 my_network
GO TO FULL VERSION