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

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

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 Engine
  • docker-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 проекти!

open source spirit
🛠️
$

Намерихте материала за полезен?

Съдържанието на itpraktika.com е безплатно и ще остане такова.
Ако статията ти е помогнала — можеш да подкрепиш сайта с малка доброволна сума. Всяко дарение помага за поддръжката и развитието на портала.

PayPal Revolut

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

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


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