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

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 и започнете да кодите!


Как да използвате всички тези заедно? 🤔

  1. Създайте папка за всеки проект.
  2. Поставете съответния docker-compose.yml.
  3. Пуснете с docker-compose up -d.

💡 Съвет: Използвайте docker-compose down, когато спирате контейнерите, за да освободите ресурси.


Заключение 🎯

Docker ви дава бързина, гъвкавост и повторяемост. С тези 10 контейнера можете:

✅ Да пуснете WordPress за 1 минута.
✅ Да ускорите сайта си с Redis.
✅ Да следите сървъра с Grafana.

Всичко това без да инсталирате нищо на основната си машина!

🚀 Следваща стъпка: Експериментирайте и комбинирайте контейнери (напр. WordPress + Redis + Nginx).

Споделете тази статия, ако ви е помогнала! 🚢

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: