Що таке Docker і як користуватися ним на VPS?
Docker — це інструмент, що запускає застосунок разом з усім, що йому потрібно, в ізольованому пакеті під назвою контейнер. На VPS використання Docker означає, що ви запускаєте застосунок із готового пакета, а не встановлюєте його по частинах на сервері. Налаштування й видалення займають кілька команд, а застосунки не заважають налаштуванням один одного.
На відміну від віртуальної машини, контейнер не має власної операційної системи. Він спільно використовує ядро сервера, тому запускається за лічені секунди й споживає мало пам’яті. Натомість його ізоляція не така сильна, як у віртуальної машини.
Чотирьох термінів досить для початку
| Термін | Що він означає |
|---|---|
| Образ | Готовий пакет застосунку. Його завантажують із реєстру, наприклад Docker Hub. |
| Контейнер | Запущена копія, створена з образу. |
| Том | Постійне сховище, що зберігає ваші дані, навіть коли контейнер видалено. |
| Compose | Інструмент, що описує кілька контейнерів в одному файлі compose.yaml і керує ними однією командою. |
Видалення контейнера видаляє файли всередині нього. Усе, що має вціліти, як-от базу даних, монтуйте на том або в папку сервера.
Як установити Docker на Ubuntu?
Спершу підключіться до сервера через SSH. Пакет docker.io із репозиторіїв Ubuntu працює, і сервер Docker від Seturack з готовим встановленням використовує саме його. Для найновішої версії скористайтеся власним репозиторієм apt від Docker. Згідно з офіційною документацією Docker, пакети Ubuntu, як-от docker.io і docker-compose, конфліктують із власними пакетами Docker, тож спершу видаліть їх, якщо вони встановлені.
- Виконайте розділ «apt repository» на сторінці встановлення Docker для Ubuntu, щоб додати ключ підпису й джерело репозиторію. Виконуйте звідти команди без змін, бо вони міняються від випуску до випуску.
- Установіть пакети:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - Перевірте, що служба працює:
sudo systemctl status docker - Запустіть тестовий контейнер:
sudo docker run --rm hello-world
Якщо ви бачите вітальне повідомлення, Docker готовий. В Ubuntu і Debian служба запускається сама під час кожного завантаження.
Ваш перший контейнер
Запустіть вебсервер однією командою:
docker run -d --name web --restart unless-stopped -p 80:80 nginx:1.30
-d запускає контейнер у фоновому режимі. --restart unless-stopped запускає його знову, коли сервер перезавантажується або контейнер аварійно завершується. -p 80:80 з’єднує порт 80 сервера з контейнером. nginx:1.30 — назва образу й тег версії. Тег наведено лише як приклад, тож виберіть актуальний стабільний тег на офіційній сторінці Nginx у Docker Hub. Відкрийте IP-адресу сервера в браузері, і ви побачите вітальну сторінку Nginx. Щоб видалити його, виконайте docker rm -f web.
Змонтуйте том для постійних даних, наприклад -v sitedata:/usr/share/nginx/html. Томи можна переглянути командою docker volume ls. Служби в тому самому файлі compose.yaml звертаються одна до одної за назвою служби, тож ваш застосунок підключається до бази даних, наприклад, як до db.
Коли контейнерів кілька, складіть їх усі в файл compose.yaml і виконайте docker compose up -d у папці цього файлу. Ключі image, restart, ports і volumes у файлі відповідають прапорцям вище. Стан перевіряють командою docker compose ps, журнали читають через docker compose logs -f, а все вимикають командою docker compose down.
Команди, якими ви користуватиметеся щодня
| Команда | Призначення |
|---|---|
docker ps | Показує запущені контейнери. Додайте -a, щоб побачити й зупинені. |
docker logs -f web | Стежить за журналом контейнера web наживо. |
docker exec -it web sh | Відкриває оболонку всередині контейнера. |
docker stats | Показує використання CPU і пам’яті контейнерами. |
docker compose pull і docker compose up -d | Завантажує новий образ і замінює контейнер новим. Дані в томах зберігаються. |
Перед оновленням прочитайте примітки до випуску застосунку й самі підніміть тег версії у файлі compose. Сенс фіксації тега в тому, що оновлення стає рішенням, а не випадковістю.
Чотири речі, на які варто звернути увагу
- Docker оминає правила ufw. Згідно з офіційною документацією, порти, які публікує Docker, відкриваються раніше, ніж спрацьовують правила ufw. Правило ufw, що забороняє такий порт, нічого не змінює. Службу, яка не повинна бути доступна ззовні, прив’яжіть лише до локальної адреси, наприклад
-p 127.0.0.1:5432:5432. Контейнери в тій самій мережі Docker і так бачать один одного, тож базу даних публікувати не потрібно. - Тег latest. Якщо ви не вкажете тег, завантажується
latest. Під час наступного завантаження ваш застосунок може перескочити на несподівану версію. Указуйте конкретний тег і плануйте оновлення самі. - Група docker означає root. Додавання користувача до групи
dockerдає йому привілеї рівня root (офіційна документація). Додавайте лише ті акаунти, яким довіряєте. - Журнали й образи заповнюють диск. Типове налаштування журналів Docker не обмежує розмір. Задайте обмеження для контейнера:
--log-opt max-size=10m --log-opt max-file=3.docker system dfпоказує використання диска, аdocker image pruneвидаляє образи без тегів.
Docker чи пряме встановлення?
Docker допомагає, коли на одному сервері працює кілька застосунків, яким потрібні різні версії, коли ви хочете спробувати застосунок і чисто його видалити або коли розробник публікує офіційний образ. Для простого випадку, наприклад одного сайту WordPress, підійде й пряме встановлення. Docker — додатковий шар: оновлювати його, стежити за ним і копіювати томи доведеться вам. Якщо ви не впевнені, почніть з одного невеликого застосунку. Переносити все на Docker одразу не обов’язково.
Docker у Seturack уже готовий
Якщо ви не хочете встановлювати Docker самі, можна замовити сервер із застосунком Docker. Docker і Compose уже встановлені, а налаштування займає близько 2,5 хвилини. Брандмауер (ufw) увімкнено, ззовні відкритий лише порт SSH, fail2ban захищає SSH, а журнали контейнерів обмежено 3 файлами по 10 МБ на контейнер. У застосунку немає вебінтерфейсу, тому панель не показує адреси сайту. Описана вище пастка з портами діє й тут. Щоб почати з готового сервера, див. сторінку Docker VPS.
Коментарі0
Коментарів поки немає
Поділіться своєю думкою першим.
Будь ласка, увійдіть або зареєструйтеся, щоб залишити коментар.