Изчерпателно ръководство за Docker и Docker Compose: Всичко, което трябва да знаете

Изчерпателно ръководство за Docker и Docker Compose: Всичко, което трябва да знаете

В последните години контейнеризацията промени начина, по който разработчиците и системните администратори работят с приложения. Ако преди разчитахме на виртуални машини, днес Docker и Docker Compose са стандарт в DevOps и модерната инфраструктура. В тази статия ще ви представя подробно ръководство за Docker и Docker Compose – от историята и основите до инсталация, статистика и по-напреднали практики.


История на Docker и Docker Compose

Docker се появява през 2013 г., създаден от компанията dotCloud, която по-късно се преименува на Docker Inc. Идеята е проста: да се използват Linux контейнери, но с по-лесен и достъпен интерфейс за разработчици.

Технологията бързо набира популярност, защото решава проблемите с различията в средите. През 2014 г. Docker става с отворен код и започва бурно развитие.

Docker Compose е представен през 2015 г. от компанията Orchard, която е придобита от Docker Inc. Compose дава възможност за управление на множество контейнери чрез един YAML файл. Това се оказва ключово за по-сложните проекти.

Днес Docker е стандарт в индустрията, а Compose е предпочитан инструмент за локална разработка и малки до средни среди.


Статистика за използването на Docker

  • Според проучване на Stack Overflow Developer Survey 2024, Docker е сред най-обичаните технологии, използван от над 50% от професионалните разработчици.
  • GitHub отчита милиони публични Docker образи, достъпни за изтегляне.
  • Големи компании като Netflix, Spotify и PayPal използват Docker в продукционни среди.
  • Над 70% от организациите, които внедряват DevOps практики, използват контейнеризация, като Docker е лидер.

Тези данни показват, че Docker не е временна мода, а стабилна и трайна технология.


Какво е Docker?

Docker е платформа за контейнеризация. Тя позволява приложенията да се стартират в изолирана среда, наречена контейнер. Контейнерът съдържа всичко необходимо – код, зависимости, библиотеки, конфигурации.

Предимството е, че приложението работи по един и същи начин навсякъде – независимо от операционната система или сървъра. Това решава проблема „при мен работи, а при теб не“.


Основни понятия в Docker

  1. Image (образ) – шаблон за контейнер. В него са описани всички зависимости и конфигурации.
  2. Container (контейнер) – работеща инстанция на образа.
  3. Dockerfile – текстов файл с инструкции как да се изгради образ.
  4. Registry – хранилище за образи. Най-известното е Docker Hub.

Пример: ако образът е рецепта, то контейнерът е ястието, приготвено по тази рецепта.


Защо Docker е толкова популярен?

  • Лесно разгръщане – създавате образ веднъж и го стартирате навсякъде.
  • Скалируемост – можете да стартирате десетки или стотици контейнери без усилие.
  • Бързина – контейнерите са по-леки от виртуалните машини.
  • Изолираност – всеки контейнер работи самостоятелно.

Какво е Docker Compose?

Docker Compose е инструмент за управление на множество контейнери. Вместо да стартирате всеки контейнер поотделно, Compose използва YAML файл, който описва цялата инфраструктура.

Така можете да стартирате уеб сървър, база данни и кеш сървър с една команда.


Основни понятия в Docker Compose

  1. docker-compose.yml – файлът, в който описвате услугите.
  2. Service (услуга) – контейнер или група от контейнери.
  3. Network (мрежа) – начин контейнерите да комуникират помежду си.
  4. Volume (том) – място за съхранение на данни, което остава дори след спиране на контейнера.

Инсталиране и настройка на Docker

Инсталацията на Docker е лесна. На Linux можете да използвате официалния инсталационен скрипт:

curl -fsSL https://get.docker.com -o install-docker.sh
sh install-docker.sh

След това проверете дали Docker е инсталиран:

docker --version
docker compose version

📌 Важно: старото docker-compose (с тире) е отделен бинарен файл и вече се смята за „legacy“. Новото docker compose (без тире) е официалният и поддържан начин.

За да стартирате Docker без sudo, добавете потребителя си в групата docker:

sudo usermod -aG docker $USER

Излезте и влезте отново в системата.

С това вече имате готова среда за работа.


Пример с WordPress и MySQL

Нека разгледаме реален пример:

version: '3.8'

services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: example
    volumes:
      - ./wordpress:/var/www/html

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

С една команда docker compose up -d получаваме работещ WordPress сайт с MySQL база данни.


Полезни команди в Docker и Compose

Docker:

  • docker ps – показва активните контейнери.
  • docker images – списък с наличните образи.
  • docker exec -it <container> bash – достъп до контейнера.

Docker Compose:

  • docker compose up -d – стартира контейнерите във фонов режим.
  • docker compose down – спира и премахва контейнерите.
  • docker compose logs – показва логове.

Практически съвети

  1. Използвайте .env файл – така лесно сменяте пароли и настройки.
  2. Избягвайте latest таг – по-добре е да фиксирате конкретна версия.
  3. Следете ресурсите – контейнерите могат да натоварят системата.
  4. Редовно чистете неизползваните образиdocker system prune.

Разлики между Docker и виртуални машини

  • Виртуалните машини стартират цяла операционна система.
  • Контейнерите използват ядрото на хост системата.
  • ВМ са по-тежки и бавни за стартиране.
  • Контейнерите са по-леки и по-бързи.

Пример: Ако ВМ е цяла къща, контейнерът е апартамент в жилищна сграда.


Безопасност при работа с Docker

  • Не използвайте root потребител в контейнерите.
  • Редовно обновявайте образите.
  • Ограничете достъпа до Docker API.
  • Използвайте официални образи, когато е възможно.

Кога да използвате Docker Compose?

Compose е чудесен за локална разработка, тестване и малки проекти. Ако имате сложна система с много услуги, Compose ви спестява десетки команди.

За по-големи среди и продукция често се използват Kubernetes или Docker Swarm.


Често срещани грешки и как да ги избегнем

  1. „Connection refused“ при база данни – проверете дали услугата е стартирала.
  2. „Image not found“ – уверете се, че образът съществува или го билднете.
  3. Конфликти на портове – сменете портовете в docker-compose.yml.

Бъдещето на Docker и контейнеризацията

Docker вече е стандарт в индустрията. Дори да използвате Kubernetes, Docker често е първата стъпка. Контейнеризацията ще остане основна технология за години напред.


Заключение

Docker и Docker Compose улесняват разработката, тестването и разгръщането на приложения. Те спестяват време, ресурси и нерви. С няколко команди можете да изградите среда, която преди е изисквала часове.

Ако искате да сте в крак с модерния DevOps свят, Docker е задължителен инструмент. Docker Compose пък е вашият верен помощник за управление на сложни среди.


Въпрос към вас

Използвате ли вече Docker във вашите проекти? Споделете опита си – ще ми е интересно да науча какви решения сте изградили с тази технология.

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

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

е DevOps технологичен ентусиаст с опит в Linux, Docker, Kubernetes и CI/CD. Той споделя практични ръководства и анализи, които помагат на специалистите да изграждат по-добри и ефективни системи. На devopsbg.net Федя предоставя актуални и полезни насоки за автоматизация, сигурност и оптимизация на инфраструктурата.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *


Колко е 4 - 3 ? (въведете числото)