Установка Docker, Docker-compose и Docker-UI (Portainer) в Ubuntu 24.04

    4 минуты

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации, контейнеризатор приложений. Позволяет «упаковать» приложение со всем своим окружением и зависимостями в контейнер, который может быть развёрнут на любой Linux-системе с поддержкой контрольных групп в ядре, а также предоставляет набор команд для управления этими контейнерами.

В репозитории Ubuntu обычно выложена не самая последняя версия Docker. Поэтому мы будем устанавливать его из официального репозитория Docker.

1. Установка Docker

1. Обновляем список пакетов
sudo apt update
2. Устанавливаем дополнительные пакеты

Для установки докера потребуется дополнительно загрузить 4 пакета, а именно:

  • curl — необходим для работы с веб-ресурсами;
  • software-properties-common — пакет для управления ПО с помощью скриптов;
  • ca-certificates — содержит информацию о центрах сертификации;
  • apt-transport-https — необходим для передачи данных по протоколу HTTPS.
sudo apt install apt-transport-https ca-certificates curl software-properties-common
3. Добавляем ключ GPG официального репозитория Docker

GPG-ключ нужен для верификации подписей ПО. Он понадобится для добавления репозитория докера в локальный список. Импортируем его

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
4. Добавляем репозиторий докера
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5. Снова обновляем список пакетов
sudo apt update
6. Проверка источника установки

Проверяем источник установки, убеждаемся, что она будет происходить из репозитория Docker, а не Ubuntu

apt-cache policy docker-ce

В итоге терминал выдаст что-то вроде такого — это значит, что всё правильно

docker-ce:
  Installed: (none)
  Candidate: 5:27.3.1-1~ubuntu.24.04~noble
  Version table:
     5:27.3.1-1~ubuntu.24.04~noble 500
        500 https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
     5:27.2.1-1~ubuntu.24.04~noble 500
        500 https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
     5:27.0.2-1~ubuntu.24.04~noble 500
        500 https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
     5:27.0.1-1~ubuntu.24.04~noble 500
        500 https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
     5:27.0.0-1~ubuntu.24.04~noble 500
        500 https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
7. Устанавливаем Docker
sudo apt install docker-ce
8. Проверяем статус Docker
sudo systemctl status docker

На выходе должен быть работающий сервис Docker

● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-09-21 01:20:55 +05; 11h ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 6280 (dockerd)
      Tasks: 164
     Memory: 54.8M (peak: 62.1M)
        CPU: 48.679s
     CGroup: /system.slice/docker.service
             ├─6280 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
             ├─6524 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8000 -container-ip 172.17.0.2 -container-port 8000
9. Запускаем тестовый контейнер
sudo docker run hello-world

и убеждаемся, что всё работает верно

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

Теперь будьте внимательными, далее будут небезопасные настройки, которые ни в коем случае нельзя производить, если Docker на проде — этим вы делегируете root-права обычному пользователю.
10. Разрешаем не root пользователю запускать Docker

Добавляем своего пользователя в группу docker

sudo usermod -aG docker ${USER}

и отныне любой пользователь системы может спокойно работать с Docker от своего имени без использования sudo.

2. Установка Docker-compose

По идее Docker-compose должен быть установлен автоматически с установкой Docker, в чём можно убедиться следующей командой

docker compose version

выходом будет сообщение

Docker Compose version v2.29.7

Если этого не произошло, то скачиваем и устанавливаем Docker-compose

mkdir -p ~/.docker/cli-plugins/

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

Делаем файл исполнительным

chmod +x ~/.docker/cli-plugins/docker-compose

И снова проверяем версию Docker-compose

3. Установка Portainer

Portainer — это инструмент управления контейнерами, который эффективно взаимодействует как с Docker, так и с Kubernetes. Простыми словами — визуальный интерфейс Docker.

1. Подготовка

Открываем файл /etc/resolv.conf и добавляем DNS-сервера. Без этого установка завершится ошибкой

nameserver 8.8.8.8
nameserver 8.8.4.4

Затем, перезапускаем демон и докер

sudo systemctl daemon-reload
sudo systemctl restart docker
2. Создаём том для Portainer
docker volume create portainer_data
3. Устанавливаем Portainer
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Наслаждаемся приятным и удобным интерфейсом!

Оставьте комментарий