Встановлення та налаштування Docker на OC Ubuntu

Встановлення та налаштування Docker на OC Ubuntu

09:34, 10.02.2023

Зміст статті
arrow

  • Рекомендовані характеристики для заліза
  • Налаштування Docker в Ubuntu
  • Встановлення Docker
  • Встановлення утиліти Docker Compose
  • Особливості Docker
  • Робота з образами Docker
  • Збереження параметрів
  • Команди запущених контейнерів
  • Керування контейнерами Docker
  • Підбиття підсумків

Сучасна інфраструктура не існує без мікросервісів і контейнерів. Ці технології чудово показують себе, коли потрібно запустити додаток у процесах, ізольованих від ресурсів. Сервіс Docker став загальним ім'ям, коли справа доходить до управління контейнеризацією. Це додаток, який спрощує управління процесами додатків у контейнерах.

Що являє собою контейнер? Це структура, яка містить всередині додатки з усіма необхідними бібліотеками та залежностями. Завдяки цьому можна переносити потрібні пакети в інші дистрибутиви без необхідності створювати схоже оточення. На відміну від апаратної віртуалізації, контейнери легкі для перенесення, потребують менше ресурсів. Але найголовніше – у контейнерах повністю відсутня залежність від зовнішнього дистрибутива.

У статті ми розберемося в роботі Docker Community Edition на прикладі дистрибутива Ubuntu 20.04. Ми опишемо принцип взаємодії з контейнерами і образами на конкретних прикладах, розберемо, що являє собою Docker Compose.

Рекомендовані характеристики для заліза

Що стосується рекомендацій до "заліза", то Docker не має хардверних вимог. З огляду на те, що це утиліта для віртуалізації, все залежить від масштабу застосунків, що будуть розгорнуті всередині контейнерів. Існує одна вимога до "машинки" – підтримка віртуалізації.

Перш ніж приступити до встановлення, пропонуємо перевірити, чи відповідає ваше оточення мінімальним вимогам системи:

  • 64-бітна архітектура;
  • ядро версії 3.10.

Налаштування Docker в Ubuntu

Раніше було зазначено, що для налаштування Docker ми скористаємося сервером Ubuntu.

Встановлення Docker

Нам знадобиться утиліта останньої версії. Можна не перевіряти репозиторій Ubuntu, оскільки там не завжди розміщують найсвіжіший реліз програмного забезпечення.

Пропонуємо відразу звернутися до офіційного реєстру Docker. Для цього необхідно додати нове пакетне джерело. Щоб переконатися, що будуть завантажені робочі файли, знадобиться завантаження ключа GPG. Після виконаних маніпуляцій можна встановити пакет.

Спочатку оновлюємо список пакетів на пристрої:

$ sudo apt update


Далі потрібно інсталювати програмне забезпечення, призначене для коректної роботи apt за протоколом HTTPS:

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common


Опціонально може знадобитися додаткове ПЗ для ядра. Це необхідно, щоб файлова система aufs отримала можливість працювати з контейнерами утиліти. Так ви зможете оперативно виявляти зміни і створювати Snapshot. Це образи, доступні тільки для читання.

$ sudo apt install linux-image-extra-$(uname -r) linux-image-extra-virtual


Додаємо ключ GPG для репозиторію Docker:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -


Наступні три команди необхідні для додавання репозиторію ПЗ безпосередньо в Ubuntu і подальшого встановлення Docker у дистрибутив.

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
$ sudo apt update && apt-cache policy docker-ce
$ sudo apt install -y docker-ce


В окремих випадках під час запуску Docker можна зіткнутися з неможливістю підключення до сокета. Щоб цього уникнути, додайте користувача в групу Docker. Використовуємо таку команду:

$ sudo usermod -aG docker $(whoami)


Після цих дій ПЗ буде встановлено, запущено і додано в автозавантаження. Додатково перевірити працездатність можна такою командою:

$ sudo systemctl status docker


Якщо daemon працює коректно, у рядку з'явиться схоже повідомлення:

$Output● docker.service - Docker Application Container Engine

    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)

    Active: active (running) since Tue 2020-05-19 17:00:41 UTC; 17s ago

TriggeredBy: ● docker.socket

      Docs: https://docs.docker.com

  Main PID: 24321 (dockerd)

      Tasks: 8

    Memory: 46.4M

    CGroup: /system.slice/docker.service

            └─24321 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

На цьому етапі встановлення завершено, а утиліта готова до роботи. Для повноцінного використання Docker знадобиться допоміжний інструмент під назвою Docker Compose.

Встановлення та налаштування docker на oc ubuntu

Встановлення утиліти Docker Compose

Що являє собою це програмне забезпечення? Compose – це інструмент, який допомагає запускати кілька різних контейнерів. Утиліта використовує визначення служб, щоб створювати повністю настроювані багатоконтейнерні середовища. Вони можуть спільно користуватися мережею та простором зовнішньої пам'яті. Виконайте наступну командну послідовність:

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose


Ця команда встановлює правильні дозволи, щоб виконувати команди docker-compose:

$ sudo chmod +x /usr/local/bin/docker-compose


Перевіряємо актуальність ПЗ і підтверджуємо успішну інсталяцію:

$ docker-compose --version


Якщо ми бачимо такий висновок:

Вихід

docker-compose версії 1.29.2, build 5becea4c

Отже, процес пройшов успішно.

Особливості Docker

Команда docker використовується з опціями та підкомандами з додатковими аргументами. Розглянемо схематичний синтаксис:

docker [опції] [команда] [аргументи]


Переглянути таблицю всіх команд можна за допомогою команди:

$ docker


Відкриється таблиця:




  1. attach Прикріпити локальні стандартні потоки введення, виведення і помилок до працюючого контейнера
  2. build Створити образ із Docker-файлу
  3. commit Створити новий образ зі змін контейнера
  4. cp Копіювати файли/папки між контейнером і локальною файловою системою
  5. create Створити новий контейнер
  6. diff Перевіряти зміни файлів або каталогів у файловій системі контейнера
  7. events Отримати події реального часу з сервера
  8. exec Виконати команду в запущеному контейнері
  9. export Експортувати файлову систему контейнера у вигляді tar-архіву
  10. history Показати історію образу
  11. images Список образів
  12. import Імпортувати вміст із tar-архіву для створення образу файлової системи
  13. info Відображення загальносистемної інформації
  14. inspect Повернути низькорівневу інформацію про об'єкти
  15. docker kill Убити один або кілька запущених контейнерів
  16. load Завантажити образ із tar-архіву або STDIN
  17. login Вхід до реєстру
  18. docker logout Вихід із реєстру
  19. docker logs Отримати логи контейнера
  20. pause Призупинити всі процеси в одному або декількох контейнерах
  21. port Список зіставлень портів або конкретне зіставлення для контейнера
  22. ps Вивести список контейнерів


Робота з образами Docker

Неможливо використовувати контейнер без завантаженого Docker Image. Якщо не вносилися зміни, утиліта бере образ в офіційному хабі. Він має назву Docker Hub. Тут знаходяться всі образи, які підтримуються розробниками утиліти. Розміщувати образи в реєстрі Hub можуть усі охочі. Тому популярні додатки, дистрибутиви Linux та апплетів уже мають підготовлені образи в репозиторії.

Введемо команду для перевірки можливості завантажувати Docker Image у внутрішню пам'ять машини:

$ docker run hello-world


Спочатку утиліта перевірить, чи є вказаний образ у пам'яті. Оскільки Docker нічого не виявить, він завантажить необхідний образ, після чого запустить його в контейнері:

$Output


Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world

9bb5a5d4561a: Pull complete

Digest: sha256:3e1764d0f546ceac4565547df2ac4907fe46f007ea229fd7ef2718514bcec35d

Status: Downloaded newer image for hello-world:latest


Hello from Docker!

This message shows that your installation appears to be working correctly.

...

Це повідомлення свідчить, що процес завантаження та запуску потрібного образу працює без помилок.

Щоб знайти потрібний Docker Image у Hub, використовуйте підкоманду search і назву необхідного образу. Скрипт почне пошук у вмісті Docker Hub, покаже всі результати, які відповідають заданим параметрам. Зверніть увагу на стовпець OFFICIAL. Якщо навпроти образу в цьому стовпчику знаходиться рядок OK, значить, перед вами офіційний образ від команди творців, а не форк.

Для скачування достатньо набрати підкоманду pull. Припустимо, це образ Ubuntu. У такому разі ми вводимо:

$ docker pull ubuntu


Цей висновок свідчить, що процес пройшов успішно:

$ Output


Using default tag: latest

latest: Pulling from library/ubuntu

6b98dfc16071: Pull complete

4001a1209541: Pull complete

6319fc68c576: Pull complete

b24603670dc3: Pull complete

97f170c87c6f: Pull complete

Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d

Status: Downloaded newer image for ubuntu:latest


Таблицю зі встановленими образами можна переглянути командою:

 $ docker images


Запуск командної оболонки контейнера

Для запуску контейнера застосовується команда RUN. Розглянемо опції, які можна застосовувати разом із RUN:

  • -d – запускає контейнер у фоновому режимі;
  • -t – зв'язок tty з контейнером для введення і виведення;
  • -e – встановлює змінні оточення для прийняття ліцензійної угоди та зміни початкової конфігурації;
  • --name – присвоєння імені контейнеру;
  • -p – публікація контейнерних портів на хості, щоб забезпечити віддалений доступ до DSE, OpsCenter і Studio;
  • -i – інтерактивний доступ до командного процесора контейнера
  • -v – прив'язка каталогу на локальному хості до того DSE для управління конфігурацією або збереження даних;
  • --link – зв'язок контейнера DSE з OpsCenter, Studio з DSE.

Використовуємо команду:

$ docker run -it ubuntu


Ми запустили образ Ubuntu з доступом до командного процесора в інтерактивному режимі. Після цього ми переходимо в оточення контейнера, у консолі відобразиться його ідентифікатор. Ця інформація нам знадобиться пізніше, коли потрібно буде вказати контейнер для видалення.

Усередині контейнера доступні всі звичні команди. Враховуючи, що образ не містить більшість потрібних файлів. Тому буде потрібно оновити репозиторій:

$ apt-get update


Звертаємо увагу, що команда sudo не використовується. Оскільки робота ведеться від імені користувача з правами суперкористувача, немає потреби вписувати команду sudo. Установимо просту утиліту Dialog:

$ apt-get install -y dialog

Збереження параметрів

Усередині контейнера доступні будь-які дії, можна створювати файли, встановлювати додатки або видаляти дані – всі дії будуть актуальні для запущеного контейнера. Коли контейнер буде видалено, всі зміни також зникнуть. Якщо потрібно зберегти параметри, використовуйте команду commit. Вона створить модифікований контейнер. Для початку нам знадобиться список працюючих контейнерів:

$ docker ps


Тут нам знадобиться ідентифікатор, виконуємо цю команду:

$ docker commit -m "які зміни додано" -a "ім’я автора" container_id repository/название нового образа


Після завершення процесу модифікований контейнер збережеться в пам'яті. Щоб його знайти, запустимо список образів:

$ docker commit -m "які зміни додано" -a "ім'я автора" container_id repository/назва нового образу

Команди запущених контейнерів

Розглянемо список команд для управління:

  • start - запуск контейнера, який було зупинено;
  • stop - протилежне значення, зупинка контейнера, який запущено;
  • rm - видалення контейнера.

Щоб команда працювала коректно, не обов'язково вказувати ідентифікатор. Можна використовувати ім'я контейнера, воно доступне в окремому стовпчику

Приклад:

$ docker start d9b100f2f636
$ docker start sharp_volhard

Керування контейнерами Docker

Команда списку контейнерів дає змогу запускати опції:

  • -a. Відображає список усіх контейнерів, доступних локально.
  • -l. Виводить останній створений контейнер.

Підбиття підсумків

Docker – головна утиліта для запуску та керування контейнерами. Вона досить легка в освоєнні, користувач-початківець може без зусиль розібратися у всіх особливостях. Docker істотно прискорює розробку, спрощує перенесення системи з одного сервера на інший і дає змогу працювати в безпечному середовищі.

views 2m, 18s
views 2
Поділитися

Чи була ця стаття корисною для вас?

Популярні пропозиції VPS

Інші статті на цю тему

cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

Ми використовуємо файли cookie, щоб забезпечити вам найкращий досвід роботи на нашому сайті. Якщо ви продовжуєте користуватися сайтом, не змінюючи налаштувань, вважайте, що ви згодні на отримання всіх файлів cookie на сайті HostZealot.