MS Lesson7: Docker
Docker, VM deyil
- VM (Virtual Machine) → həqiqətən tam ayrı OS yaradır (öz kernel-i var)
- Docker container → OS yaratmır, host-un kernel-ini paylaşır
Docker nə edir?
- file system (öz faylları var)
- proseslər (digər container-lərin proseslərini görmür)
- network (öz virtual şəbəkəsi var)
- resurs limiti (CPU, RAM nə qədər istifadə edəcəyini məhdudlaşdırmaq olar)
- Kernel paylaşılır — host-un kernel-ini istifadə edir
- Tam ayrı OS yoxdur
Kernel nedir?
Nə edir?
- RAM idarə edir — hansı proqram nə qədər RAM istifadə edəcək
- CPU idarə edir — hansı proses nə vaxt işləyəcək
- Hardware ilə danışır — disk, şəbəkə kartı, USB və s.
- Prosesləri idarə edir — proqramları işə salır, dayandırır
- Təhlükəsizlik — proqramların bir-birinin yaddaşına girmişinin qarşısını alır
Linux-da
- Host-un öz Linux kernel-i var
- Docker birbaşa onu istifadə edir
- Əlavə heç nə lazım deyil
macOS-da (sənin halın)
- macOS-un Linux kernel-i yoxdur (Darwin kernel-i var)
- Docker Desktop quraşdıranda arxa planda kiçik bir Linux VM qaldırır
- Həmin VM-in Linux kernel-i var
- Docker konteynerləri həmin VM-in kernel-ini istifadə edir
Windows-da
- Eyni məntiq — Docker, WSL2 vasitəsilə Linux VM qaldırır
- Konteynerlar həmin Linux kernel-ini istifadə edir
- Linux: host kernel-i birbaşa
- macOS/Windows: Docker özü kiçik Linux VM qaldırır, onun kernel-ini verir
services:
postgres:
image: postgres:17
container_name: demo-postgres
environment:
POSTGRES_DB: demo-app
POSTGRES_USER: demo-app
POSTGRES_PASSWORD: demo-app
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
demo-network:
ipv4_address: 192.168.100.2
pgadmin:
image: dpage/pgadmin4
container_name: demo-pgadmin
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: admin
PGADMIN_SERVER_JSON_FILE: /pgadmin4/servers.json
ports:
- "5050:80"
depends_on:
- postgres
volumes:
- ./pgadmin/servers.json:/pgadmin4/servers.json
networks:
demo-network:
ipv4_address: 192.168.100.3
networks:
demo-network:
ipam:
config:
- subnet: 192.168.100.0/24
volumes:
postgres_data:
{
"Servers": {
"1": {
"Name": "demo-postgres",
"Group": "Servers",
"Host": "192.168.100.2",
"Port": 5432,
"MaintenanceDB": "demo-app",
"Username": "demo-app",
"SSLMode": "prefer"
}
}
}
Комментарии
Отправить комментарий