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

Docker — это платформа для контейнеризации приложений, позволяющая упаковывать ПО в изолированные среды. В этой статье рассмотрим установку Docker в Linux-системах, настройку демона и управление правами доступа.




Подготовка системы

Перед установкой Docker убедитесь, что:

  • Система обновлена:
Bash
sudo apt update && sudo apt upgrade # для Debian-based
sudo dnf update # для RPM-based
  • Установлены необходимые зависимости:
Bash
# для Debian-based
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# для RHEL-based
sudo dnf install -y yum-utils lvm2


Установка Docker

Добавление официального репозитория Docker

Docker предоставляет собственные репозитории для большинства дистрибутивов.

Для Debian/Ubuntu:

Bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

Для CentOS/RHEL:

Bash
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Установка Docker Engine

Bash
sudo apt install docker-ce docker-ce-cli containerd.io  # для Debian-based
sudo dnf install docker-ce docker-ce-cli containerd.io  # для RHEL-based

Запуск и автозагрузка Docker

Bash
sudo systemctl start docker
sudo systemctl enable docker

Проверка статуса:

Bash
sudo systemctl status docker


Настройка Docker после установки

Управление правами доступа

По умолчанию Docker требует sudo. Чтобы запускать команды без прав root, добавьте пользователя в группу docker:

Bash
sudo usermod -aG docker $USER
newgrp docker  # Обновление групп без перезагрузки

Проверка:

Bash
docker run hello-world

Настройка демона Docker

Конфигурация Docker хранится в:

  • /etc/docker/daemon.json (основной файл настроек).
  • Системные параметры (для systemd — /etc/systemd/system/docker.service.d/override.conf).

Пример настройки daemon.json:

JSON
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

Применение изменений:

Bash
sudo systemctl restart docker

Выбор драйвера хранения

Docker поддерживает несколько драйверов:

  • overlay2 (рекомендуется для современных ядер).
  • devicemapper (устаревший, используется в старых системах).
  • btrfs, zfs (для специфичных случаев).

Проверка текущего драйвера:

Bash
docker info | grep "Storage Driver"

ДрайверСкорость запуска контейнераИспользование дискаПоддержка в ядреРекомендуемый случай использования
overlay2⭐⭐⭐⭐⭐ (быстрейший)⭐⭐⭐⭐ (эффективный)Linux 4.0+Стандартный выбор для новых систем
aufs⭐⭐⭐⭐⭐⭐⭐Требует патчейУстаревшие Debian/Ubuntu
devicemapper⭐⭐⭐⭐ (громоздкий)Все ядраТолько в RHEL/CentOS 7 (direct-lvm mode)
btrfs⭐⭐⭐⭐⭐⭐⭐Linux 3.18+Системы с btrfs-разделами
zfs⭐⭐⭐⭐⭐⭐⭐ (компактный)Требует модуляСерверы с ZFS-хранилищами

Возможные проблемы и их решение

Ошибка доступа к демону

Bash
Got permission denied while trying to connect to the Docker daemon

Решение:

  • Убедитесь, что пользователь в группе docker.
  • Перезапустите демон:
Bash
sudo systemctl restart docker

Конфликты с SELinux/AppArmor

Если контейнеры не запускаются:

Bash
sudo setenforce 0  # Временно отключить SELinux

Или настройте политики:

Bash
sudo ausearch -c 'docker' --raw | audit2allow -M my-docker
sudo semodule -i my-docker.pp

Заключение

Docker можно установить в любом Linux-дистрибутиве, используя официальные репозитории. Основные шаги:

  1. Добавить репозиторий Docker.
  2. Установить пакеты docker-ce, docker-ce-cli, containerd.io.
  3. Настроить права доступа через группу docker.
  4. Опционально изменить параметры демона в /etc/docker/daemon.json.

Рекомендации:

  • Используйте overlay2 для лучшей производительности.
  • Настройте логирование во избежание переполнения диска.

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

Was this helpful?

0 / 0

Добавить комментарий 0