Инсталиране на Docker и Docker Compose на Debian 12 (Ubuntu)

Docker е революционизирал начина, по който разработваме и внедряваме приложения. Вместо да се борим с конфликти между библиотеки и "а при мен работеше" моменти, контейнеризацията прави всичко предсказуемо и повторяемо. Ако работите с Debian 12, тази статия ще ви покаже как да инсталирате най-новата версия на Docker заедно с вградения Docker Compose плъгин.
Защо Docker на Debian 12 ?
Debian 12 "Bookworm" е отлична платформа за Docker. Системата е стабилна, надеждна и широко използвана в production среди. Docker добавя гъвкавост и консистентност при разработката. Комбинацията между двете технологии е мечта за всеки системен администратор или разработчик.
Важно уточнение: Docker Compose вече не е отделна програма. От версия 2.0 нататък той е официален плъгин към Docker CLI. Това означава, че използваме docker compose вместо старата docker-compose команда.
Предварителни изисквания
Преди да започнем, уверете се че имате:
- Debian 12 система с root или sudo достъп
- Интернет връзка за изтегляне на пакети
- Базови познания за работа с терминала
- Поне 20 GB свободно дисково пространство
Влезте в системата си и отворете терминал. Ще работим главно с команди, но не се притеснявайте – всяка стъпка е обяснена детайлно.
Избор на метод за инсталация
Има два основни начина да инсталирате Docker на Debian 12:
Метод 1: Автоматичен (препоръчителен за повечето) – Официален convenience script от Docker. Бърз, лесен, автоматизиран.
Метод 2: Ръчен – Стъпка по стъпка добавяне на хранилище. Повече контрол, подходящ за production сървъри.
И двата метода са напълно официални и безопасни. Първият е по-бърз, вторият дава повече разбиране какво се случва.
Метод 1: Автоматична инсталация (препоръчителен)
Това е най-бързият начин да инсталирате Docker. Официалният script автоматично определя дистрибуцията, добавя хранилището и инсталира всичко необходимо.
Подготовка на системата
Първо обновяваме системата:
sudo apt update
sudo apt upgrade -y
Премахваме евентуални стари Docker версии:
sudo apt remove docker docker-engine docker.io containerd runc
Изтегляне и стартиране на скрипта
Изтегляме официалния convenience script:
curl -fsSL https://get.docker.com -o install-docker.sh
Добра практика е да прегледате скрипта преди изпълнение:
cat install-docker.sh
Ако всичко изглежда наред, стартирайте инсталацията:
sudo sh install-docker.sh
Скриптът автоматично:
- Определя версията на Debian
- Добавя официалното Docker хранилище
- Инсталира Docker Engine, CLI, containerd
- Инсталира Docker Compose плъгина
- Инсталира допълнителни плъгини като buildx
След приключване можете да изтриете скрипта:
rm install-docker.sh
Готово! Преминете директно към секция "Проверка на инсталацията" по-долу.
Метод 2: Ръчна инсталация (за напреднали)
Този метод е подходящ за production сървъри или ситуации където искате пълен контрол.
Инсталиране на необходими инструменти
Docker се инсталира от официалното хранилище на Docker Inc. Трябват ни инструменти за да го добавим:
sudo apt install ca-certificates curl gnupg lsb-release -y
Какво правят тези пакети?
ca-certificatesпозволява проверка на SSL сертификатиcurlизтегля файлове от интернетgnupgуправлява криптографски ключовеlsb-releaseпоказва информация за дистрибуцията
Добавяне на официалния GPG ключ
Създаваме директория за ключовете:
sudo install -m 0755 -d /etc/apt/keyrings
Изтегляме и добавяме официалния GPG ключ:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Задаваме правилни permissions:
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Конфигуриране на Docker хранилището
Добавяме хранилището към APT:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновяваме списъка с пакети:
sudo apt update
Инсталиране на Docker Engine
Инсталираме пълния набор от компоненти:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Какво включва тази инсталация?
docker-ceе основният Docker Enginedocker-ce-cliе командният интерфейсcontainerd.ioуправлява контейнерите на ниско нивоdocker-buildx-pluginразширява възможностите за билдванеdocker-compose-pluginе новият Docker Compose
Проверка на инсталацията
Независимо кой метод сте избрали, сега проверяваме дали всичко работи.
Docker трябва автоматично да стартира след инсталацията:
sudo systemctl status docker
Трябва да видите "active (running)" в зелено. Ако не, стартирайте услугата:
sudo systemctl start docker
sudo systemctl enable docker
Командата enable гарантира, че Docker ще стартира автоматично при рестарт.
Време е за класическия Hello World тест:
sudo docker run hello-world
Docker ще изтегли тестовия image и ще го стартира. Ако видите приветствие от Docker, всичко работи перфектно!
Проверка на Docker Compose
Новият Docker Compose е вграден като плъгин. Проверяваме версията:
docker compose version
Внимавайте – няма тире между думите! Старата команда беше docker-compose, но сега е docker compose (с интервал).
Ако видите версия 2.x или по-висока, всичко е наред. Това е модерната имплементация написана на Go.
Конфигуриране на работа без sudo
По подразбиране Docker изисква root привилегии. Това е досадно при ежедневна работа. Можем да добавим потребителя си в Docker групата.
sudo usermod -aG docker $USER
Променливата $USER автоматично използва вашето потребителско име. Опцията -aG добавя потребител в допълнителна група.
Важно: Трябва да излезете и да влезете отново за да влязат в сила промените. Или просто рестартирайте сесията:
newgrp docker
Тествайте без sudo:
docker run hello-world
Ако работи без sudo, конфигурацията е успешна!
Тест с реален контейнер
Нека тестваме с нещо по-практично – Nginx уеб сървър:
docker run -d -p 8080:80 --name testnginx nginx:latest
Какво означават параметрите?
-dстартира контейнера във фонов режим-p 8080:80пренасочва порт 8080 към порт 80 в контейнера--name testnginxзадава име на контейнераnginx:latestе image който използваме
Отворете браузър и посетете http://localhost:8080. Трябва да видите welcome страницата на Nginx!
Спиране и изтриване на тестовия контейнер:
docker stop testnginx
docker rm testnginx
Тестване на Docker Compose
Създаваме тестова директория:
mkdir ~/docker-compose-test
cd ~/docker-compose-test
Създаваме прост compose.yaml файл:
nano compose.yaml
Поставете следното съдържание:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
Създаваме HTML директория с тестов файл:
mkdir html
echo "<h1>Docker Compose работи!</h1>" > html/index.html
Стартираме compose проекта:
docker compose up -d
Посетете http://localhost:8080 – трябва да видите вашето съобщение!
Спиране и изчистване:
docker compose down
Полезни команди за ежедневна работа
След като Docker е готов, тези команди ще ви трябват постоянно:
Преглед на работещи контейнери:
docker ps
Преглед на всички контейнери (включително спрени):
docker ps -a
Преглед на images:
docker images
Изтриване на неизползвани обекти:
docker system prune -a
Показване на логове на контейнер:
docker logs име_на_контейнер
Влизане в работещ контейнер:
docker exec -it име_на_контейнер /bin/bash
Изтегляне на нов image:
docker pull име_на_image
Спиране на всички работещи контейнери:
docker stop $(docker ps -q)
Съвети за оптимизация
Docker може да консумира доста пространство. Редовно чистете неизползвани images и контейнери.
Автоматично изчистване на Docker обекти на седмица:
sudo crontab -e
Добавете този ред:
0 2 * * 0 docker system prune -af --volumes
Това автоматично изтрива неизползвани обекти всяка неделя в 2 часа.
Ограничаване на логовете помага за спестяване на място. Създайте /etc/docker/daemon.json:
sudo nano /etc/docker/daemon.json
Добавете:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
Рестартирайте Docker:
sudo systemctl restart docker
Сигурност и добри практики
Никога не стартирайте контейнери като root освен ако е абсолютно необходимо. Използвайте USER директивата в Dockerfile.
Редовно обновявайте Docker:
sudo apt update
sudo apt upgrade docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Използвайте официални или проверени images от Docker Hub. Внимавайте с непознати images.
Конфигурирайте firewall правила:
sudo apt install ufw -y
sudo ufw allow 22/tcp
sudo ufw enable
За production среди, добавете само необходимите портове:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Отстраняване на проблеми
Ако Docker не стартира, проверете логовете:
sudo journalctl -u docker.service -n 50
При проблеми с permissions, уверете се че сте в docker групата:
groups
Ако не виждате "docker" в списъка, излезте и влезте отново.
При мрежови проблеми рестартирайте Docker:
sudo systemctl restart docker
Ако контейнер не може да достъпи интернет:
sudo systemctl restart docker
sudo iptables -F
При проблеми с DNS в контейнерите, редактирайте /etc/docker/daemon.json:
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
Допълнителни ресурси и следващи стъпки
Сега когато Docker работи, можете да:
- Експериментирате с различни images от Docker Hub
- Създавате собствени Dockerfile проекти
- Изучавате Docker networking и volumes
- Настройвате multi-container приложения с Docker Compose
- Разгледате Docker Swarm или Kubernetes за оркестрация
Официалната документация е отличен ресурс:
- Docker Docs: docs.docker.com
- Docker Hub: hub.docker.com
- Docker Compose спецификация: docs.docker.com/compose
Заключение
Инсталирахте успешно Docker и Docker Compose на Debian 12! Независимо дали избрахте бързия автоматичен метод или подробната ръчна инсталация, системата ви е напълно готова.
Docker Compose като плъгин е по-бърз и по-добре интегриран от старата версия. Новата docker compose команда е стандартът за бъдещето.
Експериментирайте с различни images. Създавайте compose файлове за вашите проекти. Docker е инструмент който ще ви прави работата по-лесна всеки ден.
Помнете – практиката е ключът. Колкото повече използвате Docker, толкова по-естествен ще става. Започнете с прости проекти и постепенно усложнявайте задачите.
Успех с вашите Docker проекти!
Намерихте материала за полезен?
Съдържанието на itpraktika.com е безплатно и ще остане такова.
Ако статията ти е помогнала — можеш да подкрепиш сайта с малка доброволна сума.
Всяко дарение помага за поддръжката и развитието на портала.
