Docker & Docker Compose: от нулата до сървър

Docker & Docker Compose: от нулата до сървър

Добре дошли в света на съвременните технологии! Ако сте начинаещи в програмирането или системната администрация, вероятно постоянно чувате думата Docker. Може би звучи сложно, но истината е, че Docker беше създаден, за да прави живота ни по-лесен, а не по-труден.

В тази първа част от нашата поредица ще извървим пътя от „Какво е това?“ до стартирането на цяла инфраструктура с Docker Compose. При това ще го направим по професионалния начин – директно на сървър.


1. Проблемът: „На моя компютър работи!“ 😫

Представете си, че сте написали страхотна програма. Тя работи перфектно на вашия лаптоп. Пращате я на клиент или я качвате на сървъра и… бум! Нищо не тръгва. Оказва се, че на сървъра версията на Python е различна, липсва някаква библиотека или настройките на базата данни са други.

Това се нарича „конфликт на средата“. Преди Docker, програмистите губеха часове (и дни) в конфигуриране на сървъри.

Решението: Дигиталният контейнер 📦

Docker взема вашата програма и я затваря в „контейнер“. Вътре в този контейнер се намира всичко необходимо:

  • Самият код.
  • Библиотеките, които ползва.
  • Настройките на системата.

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


2. Подготовка: Къде ще работим? 🌐

За да научите Docker правилно, трябва да го използвате там, където му е мястото – на Linux сървър.

Много уроци започват с инсталация на Windows (Docker Desktop), но това често обърква начинаещите с допълнителни настройки на BIOS, виртуални машини и излишно натоварване на RAM паметта. Затова ние ще действаме професионално.

Стъпка 1: Достъп до сървъра

Ако имате собствен сървър (VPS) с Ubuntu, супер! Ако нямате, можете да наемете такъв за няколко лева на месец от доставчици като DigitalOcean, Hetzner или български такива.

Свържете се със сървъра си чрез терминал (PowerShell на Windows или Terminal на Mac):

ssh root@vashiqt-ip-adres

3. Професионална инсталация (С един замах) 🛠️

Забравете за дългите упътвания. Docker предоставя официален скрипт, който прави всичко вместо вас. След като сте се логнали в сървъра, просто копирайте и поставете това:

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

Какво се случи?

  1. Свалихте инсталационния скрипт.
  2. Изпълнихте го с администраторски права.
  3. Docker вече е инсталиран и готов за работа.

За да проверите дали всичко е наред, напишете: docker --version

Ако видите версия (напр. Docker version 24.x.x), значи сте готови за магията! ✨


4. Трите кита на Docker: Image, Container, Registry 🏗️

Преди да стартираме нещо, трябва да разберете три основни понятия:

  1. Image (Образ): Това е „замразена“ снимка на вашата програма. Тя не прави нищо, просто стои на диска. Представете си я като рецепта за торта.
  2. Container (Контейнер): Това е самата торта. Когато „стартирате“ образа, той се превръща в жив, работещ процес (контейнер). Можете да направите 100 контейнера от един и същи образ.
  3. Registry (Регистър): Мястото, където се съхраняват образите. Най-големият е Docker Hub – там има готови образи за всичко: бази данни, уеб сървъри, езици за програмиране.

5. Първият ви контейнер: Уеб сървър за 5 секунди 🚀

Нека пуснем Nginx – най-използваният уеб сървър в света. На обикновен сървър инсталацията му отнема време и настройки. С Docker е една команда:

docker run -d -p 80:80 --name moqt-site nginx

Разбивка на командата (Важно!):

  • docker run: Казва на Docker да намери образа и да го стартира.
  • -d: (Detached) Означава „работи в бакграунд“. Ако го няма, терминалът ви ще се блокира от логовете на сървъра.
  • -p 80:80: Това е критично! Първото 80 е портът на вашия сървър. Второто 80 е портът вътре в контейнера. Така казваме: „Когато някой посети моето IP, препрати го към контейнера“.
  • --name moqt-site: Даваме му име, за да го разпознаваме.
  • nginx: Името на образа, който теглим от Docker Hub.

Резултат: Отворете браузъра си и напишете IP адреса на вашия сървър. Трябва да видите: "Welcome to nginx!". Поздравления, вие сте системен администратор! 😎


6. Как да управляваме хаоса? (Команди за оцеляване) 🕹️

Сега, когато нещо работи, трябва да знаем как да го контролираме.

  • Виж кои контейнери работят в момента: docker ps
  • Виж всички контейнери (дори спрените): docker ps -a
  • Спри сървъра: docker stop moqt-site
  • Виж какво се случва „вътре“ (Логове): docker logs moqt-site (Ако нещо не работи, тук ще видите защо).

7. Големият финал: Docker Compose 🎼

Един контейнер е лесен. Но какво правим, ако ни трябва уебсайт (Nginx) + база данни (MySQL)? Да пишем две дълги команди docker run и да ги свързваме ръчно е мъчение.

Тук идва Docker Compose. Той ви позволява да опишете цялата си инфраструктура в един файл.

Стъпка 1: Инсталация

На модерните системи той идва с Docker, но проверете с: docker compose version

Стъпка 2: Създаване на проекта

Създайте папка за вашия проект и влезте в нея:

mkdir my-app && cd my-app

Сега създайте файл с име docker-compose.yml. Можете да ползвате редактора nano: nano docker-compose.yml

Поставете вътре този код:

version: '3.8'

services:
  web:
    image: nginx
    ports:
      - "8080:80"
  
  database:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: parolata-tuk

(Натиснете Ctrl+O, Enter и после Ctrl+X, за да запазите и излезете от nano).

Стъпка 3: Магията започва

Вместо да стартирате нещата едно по едно, напишете само това:

docker compose up -d

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

За да спрете и изтриете всичко наведнъж:

docker compose down

8. Защо това се получи „от раз“? 💎

Ако сте следвали стъпките, вероятно вече имате работеща система. Ето тайните на успеха:

  1. Чист сървър: Когато работим на чист Linux, няма конфликти с Windows настройки.
  2. YAML синтаксис: Внимавайте с интервалите в docker-compose.yml – те са важни! Не използвайте Tab, а само интервали.
  3. Портове: Ако порт 80 е зает, винаги можете да го смените на 8081 или 8082.

Заключение и следващи стъпки

Днес научихте основите на най-важната технология за облачни услуги. Вече знаете как:

  • Да инсталирате Docker професионално.
  • Да стартирате готови програми (Images) като контейнери.
  • Да дирижирате сложни системи с Docker Compose.

В следващата статия ще преминем на следващото ниво: Как да пакетираме наш собствен софтуер. Ще напишем първия си Dockerfile и ще превърнем един прост код в професионален Docker образ.


open source spirit
🛠️
$

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

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

PayPal Revolut

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

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


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