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.
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
Наслаждаемся приятным и удобным интерфейсом!