Docker за начинаещи: 10 контейнера, които решават реални проблеми

Конкретна полза: Научете как да стартирате 10 полезни контейнера с готови docker-compose.yml
файлове. Решете реални задачи като уеб сървър, кеширане, бази данни и прокси с една команда.
Специфично съдържание: Практически примери за WordPress, MySQL, Redis, Nginx, Portainer и други. Включени са готови за употреба конфигурации.
Измерима стойност: 10 docker-compose файла = бързо внедряване без главоболие.
Защо Docker? 🚢
Docker е инструмент, който пакетира приложенията ви в "контейнери" – леки, преносими и независими среди. Представете си го като кутии, в които всичко работи по един и същи начин, независимо къде ги пуснете.
✅ Предимства:
- Бързо стартиране ⚡ – няма нужда от сложни инсталации.
- Изолирани среди 🏝️ – няма конфликти между библиотеки.
- Лесен ъпдейт 🔄 – промените се правят в кода, не в средата.
Ако сте начинаещ, Docker ви спестява часове настройки. Днес ще ви покажа 10 контейнера, които решават реални проблеми с готови docker-compose.yml
файлове.
1. WordPress + MySQL (Най-лесният блог) 🖥️
Проблем: Искате бързо да пуснете WordPress без да инсталирате PHP, Apache и MySQL ръчно.
Решение: Два контейнера – WordPress и MySQL.
version: '3.8'
services:
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wpdb
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: wpdb
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
Как работи?
- WordPress се свързва към MySQL контейнера (
db
). - Данните се запазват във
volume
, така че да не се изгубят при рестарт.
Стартиране:
docker-compose up -d
След това отворете http://localhost:8080
– WordPress е готов!
2. Redis (Свръхбързо кеширане) 🚀
Проблем: Вашето приложение е бавно, защото базата данни е претоварена.
Решение: Redis кешира често използвани данни в паметта.
version: '3.8'
services:
redis:
image: redis:alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
volumes:
redis_data:
Ползи:
- Намалява натоварването на MySQL/PostgreSQL.
- Скорост до 100 000 заявки/секунда!
3. Nginx Proxy (Управление на множество сайтове) 🔄
Проблем: Имате няколко уеб приложения на различни портове и искате да ги направите достъпни чрез домейни.
Решение: Nginx като reverse proxy.
version: '3.8'
services:
nginx-proxy:
image: nginxproxy/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
Как работи?
- Автоматично пренасочва
example.com
към съответния контейнер. - Поддържа SSL (HTTPS) с LetsEncrypt.
4. Portainer (Управление на Docker с GUI) 🖱️
Проблем: Не ви харесва командния ред за управление на контейнери.
Решение: Portainer – графичен интерфейс за Docker.
version: '3.8'
services:
portainer:
image: portainer/portainer-ce
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
volumes:
portainer_data:
Отворете http://localhost:9000
и управлявайте всички контейнери с мишка!
5. PostgreSQL (Мощна база данни) 🐘
Проблем: Искате алтернатива на MySQL с добра поддръжка за GIS и JSON.
version: '3.8'
services:
postgres:
image: postgres:13
environment:
POSTGRES_PASSWORD: mysecretpassword
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
Плюсове:
- Поддръжка на сложни заявки.
- Добра интеграция с Python (Django), Node.js.
6. MongoDB (NoSQL за гъвкави данни) 🍃
Проблем: Искате да съхранявате данни без фиксирана схема.
version: '3.8'
services:
mongo:
image: mongo:5.0
ports:
- "27017:27017"
volumes:
- mongo_data:/data/db
volumes:
mongo_data:
Използвайте го за:
- Приложения с променлива структура (напр. социални мрежи).
- Бързо прототипиране.
7. Adminer (Леген GUI за бази данни) 🗃️
Проблем: Не искате да инсталирате PhpMyAdmin или pgAdmin.
version: '3.8'
services:
adminer:
image: adminer
ports:
- "8081:8080"
Отворете http://localhost:8081
и се свържете към всяка база!
8. Elasticsearch + Kibana (Търсене и визуализация) 📊
Проблем: Искате да индексирате и анализирате големи данни.
version: '3.8'
services:
elasticsearch:
image: elasticsearch:8.5
environment:
- discovery.type=single-node
ports:
- "9200:9200"
kibana:
image: kibana:8.5
ports:
- "5601:5601"
depends_on:
- elasticsearch
За какво е полезно?
- Търсене в големи текстове (напр. електронни магазини).
- Анализ на логове.
9. Prometheus + Grafana (Мониторинг) 📈
Проблем: Искате да следите CPU, памет и мрежа на сървъра.
version: '3.8'
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
grafana:
image: grafana/grafana
ports:
- "3000:3000"
Grafana създава красиви дашборди за метриките.
10. Jupyter Notebook (Python среда за експерименти) 🐍
Проблем: Искате бърза среда за писане на Python код с визуализации.
version: '3.8'
services:
jupyter:
image: jupyter/datascience-notebook
ports:
- "8888:8888"
volumes:
- ./notebooks:/home/jovyan/work
Отворете http://localhost:8888
и започнете да кодите!
Как да използвате всички тези заедно? 🤔
- Създайте папка за всеки проект.
- Поставете съответния
docker-compose.yml
. - Пуснете с
docker-compose up -d
.
💡 Съвет: Използвайте docker-compose down
, когато спирате контейнерите, за да освободите ресурси.
Заключение 🎯
Docker ви дава бързина, гъвкавост и повторяемост. С тези 10 контейнера можете:
✅ Да пуснете WordPress за 1 минута.
✅ Да ускорите сайта си с Redis.
✅ Да следите сървъра с Grafana.
Всичко това без да инсталирате нищо на основната си машина!
🚀 Следваща стъпка: Експериментирайте и комбинирайте контейнери (напр. WordPress + Redis + Nginx).
Споделете тази статия, ако ви е помогнала! 🚢
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut