Як встановити Docker і запустити Docker Containers в Ubuntu 24.04

Як встановити Docker і запустити Docker Containers в Ubuntu 24.04

 

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

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

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

 

Вимоги до встановлення

Ви повинні мати можливість встановити Docker Engine на будь-яку систему Ubuntu з апаратним забезпеченням процесорів x86_64 (або amd64), arm64, armhf, s390x і ppc64le (ppc64el).

Також переконайтеся, що:

  • Ваша система має доступ до Інтернету
  • Ви отримуєте доступ до системи як користувач root або користувач із привілеями sudo
  • Система має достатнє сховище для зберігання даних контейнерів
  • Достатній обсяг пам’яті та процесора доступний для роботи контейнерів
  • У вас є кілька хвилин, щоб виконати установку

Етапи встановлення Docker на Ubuntu 24.04 (Noble Numbat)

Хоча основний репозиторій Ubuntu 24.04 (Noble Numbat) міститиме пакет для налаштування Docker, це може бути застарілим виданням, якщо порівнювати з версією, наданою розробниками Docker. Тому встановлення останнього пакету Docker Engine краще виконувати з основного репозиторію Docker.

Ось елементи Docker;

  • Docker Engine: відповідає за збірку та запуск контейнерів на хост-машині.
  • Docker Daemon: запущений процес, який керуватиме контейнерами Docker
  • Docker Client: інструмент для виконання команд і взаємодії з запущеними контейнерами.
  • Docker Compose: використовується для легкого керування кількома контейнерами, що забезпечує роботу одного сервісу.

Налаштування репозиторію Docker

Щоб отримати останній випуск програми Docker, почніть процес із додавання репозиторіїв APT, які підтримує Docker Team. Виконайте основні кроки з оновлення та модернізації вашої системи.

sudo apt update && sudo apt upgrade -y

Якщо після оновлення потрібне перезавантаження, розгляньте можливість виконання цих заходів.

[ -f /var/run/reboot-required ] && sudo reboot -f

Імпорт ключа GPG репозиторію Docker APT

curl  -fsSL  https://download.docker.com/linux/ubuntu/gpg| sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg

Додайте репозиторій до джерел Apt:

echo "deb https://download.docker.com/linux/ubuntu  noble stable" | sudo tee /etc/apt/sources.list.d/docker.list

Оновіть список репозиторіїв у системі, щоб переконатися, що він працює.

$ sudo apt update
Hit:1 http://ke.archive.ubuntu.com/ubuntu noble InRelease
Hit:2 http://ke.archive.ubuntu.com/ubuntu noble-updates InRelease
Get:3 http://ke.archive.ubuntu.com/ubuntu noble-backports InRelease [90.8 kB]
Get:4 https://download.docker.com/linux/ubuntu noble InRelease [47.0 kB]
Hit:5 http://security.ubuntu.com/ubuntu noble-security InRelease
Get:6 https://download.docker.com/linux/ubuntu noble/stable amd64 Packages [3,781 B]
Fetched 141 kB in 1s (218 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.

Встановіть пакет Docker Engine

Коли репозиторій налаштований, пакет можна легко встановити за допомогою менеджера пакетів.apt

sudo apt install docker-ce docker-ce-cli  docker-buildx-plugin docker-compose-plugin containerd.io

У список пакетів ми включили інші залежності Docker, необхідні для безперебійної роботи. Переконайтеся, що він працює, надіславши запит на встановлену версію.

$ docker --version
Docker version 26.0.1, build d260a54

Плагін Compose також має бути доступним для використання у командному рядку.

$ docker compose version
Docker Compose version v2.26.1

Як користуватися Docker після встановлення

У цьому розділі ми створимо файл Dockerfile і створимо простий додаток для веб-сервера Apache. Dockerfile — це текстовий файл, написаний у форматі YAML з інструкціями для створення зображень. Результатом цього процесу є образ контейнера, який при виконанні називається “контейнер”.

Давайте створимо зразок Dockerfile на нашій системі Ubuntu 24.04.

vim Dockerfile

Визначте вміст файлу – набір інструкцій.

# Base image to use
FROM debian

# Maintainer name and Email address
MAINTAINER Josphat <gramota@infoit.com.ua>

# Update package index
RUN apt update

# Install required packages
RUN apt -y install tzdata apache2

# Add contents to default index.html page
RUN echo "Apache Web Server Test from Container" > /var/www/html/index.html

# Expose the service on port 80
EXPOSE 80

# Specify commands required to start the service
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]

Додайте свій обліковий запис користувача до групи Docker, до якої не ввійшли як користувач root.

sudo usermod -aG docker $USER

Розпочніть сеанс за допомогою групи Docker. Це запобігає необхідності виходити з системи, а потім знову входити в систему.

newgrp docker

Створіть зображення, надавши йому tag.

docker build -t infoit/debian-apache2:latest ./

Приклад виводу з команди.

 

Список створених образів контейнерів.

jkmutai@ubuntu2204-server:~$ docker images
REPOSITORY                         TAG       IMAGE ID       CREATED              SIZE
infoit/debian-apache2   latest    201023e62f61   About a minute ago   253MB

Після того, як образ був побудований, ми можемо створити з нього екземпляр-контейнер за допомогою команди.docker run

docker run -d -p 8081:80 infoit/debian-apache2

Підтвердьте, чи запущено контейнер, за допомогою команди.docker ps

$ docker ps
CONTAINER ID   IMAGE                              COMMAND                  CREATED          STATUS          PORTS                                   NAMES
08d253e467f3   infoit/debian-apache2   "/usr/sbin/apachectl…"   27 seconds ago   Up 27 seconds   0.0.0.0:8081->80/tcp, :::8081->80/tcp   fervent_wilbur

Перевірте доступ до контейнера за допомогою завитка на відкритому порту.

$ curl localhost:8081
Apache Web Server Test from Container

Доступ до служби також можна отримати в браузері за допомогою IP-адреси вашого сервера/настільного комп’ютера Ubuntu. Далі ми даємо вам бонусні команди docker для керування контейнером.

  • Перевірка журналів контейнерів
docker logs <ContainerID>
  • Запустіть сеанс оболонки всередині контейнера
jkmutai@ubuntu2204-server:~$ docker exec -ti <ContainerID> bash
root@08d253e467f3:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@08d253e467f3:/# exit
  • Список портів прив’язки
$ docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' <ContainerID>
 80/tcp -> 8081
  • Зупиніть контейнер
docker stop <ContainerID>
  • Видаліть контейнер
$ docker rm <ContainerID>
08d253e467f3

Ви можете звернутися до офіційної документації щодо Docker CLI для отримання додаткової інформації.

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

Прокрутка до верху