AlmaLinux 9: установка Docker с нуля
Docker превращает установку приложений из мучений с зависимостями в одну команду: контейнер несёт всё нужное внутри себя и запускается одинаково на любом сервере. Установка Docker на AlmaLinux 9 с нуля идёт из официального репозитория Docker и имеет свою специфику RHEL-семейства: пакетный менеджер dnf, добавление репозитория через config-manager и учёт SELinux. Разберём по шагам: подключим репозиторий, поставим движок, проверим его, настроим запуск без sudo и добавим Docker Compose.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Зачем нужен Docker
Главная боль при установке софта на сервер — конфликты зависимостей. Одному приложению нужна одна версия библиотеки, другому — другая, и они не уживаются на одной системе. Docker решает это радикально: каждое приложение живёт в изолированном контейнере со своими библиотеками, не пересекаясь с соседями. Вы можете держать на одном сервере сайт на старом PHP и сервис на новом Python, и они не будут мешать друг другу.
Второе преимущество — воспроизводимость. Контейнер, собранный по описанию (образу), запускается идентично и на вашем ноутбуке, и на боевом сервере, и у коллеги. Исчезает классическая отговорка «у меня всё работало». Для развёртывания готового ПО это особенно удобно: множество проектов публикуют официальные образы, и запуск сложного сервиса сводится к одной команде вместо страницы инструкций. Понимая эти выгоды, перейдём к установке — ставить будем из официального источника, а не из встроенного в AlmaLinux пакета podman, который хоть и совместим, но отличается в деталях.
Подключаем официальный репозиторий Docker
Сначала поставьте плагин управления репозиториями и добавьте официальный репозиторий Docker. AlmaLinux совместим с пакетами для CentOS, поэтому используется репозиторий для CentOS:
dnf install -y dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Команда config-manager --add-repo прописывает адрес репозитория в систему, после чего dnf будет брать оттуда пакеты Docker и проверять их подпись GPG-ключом. Это стандартный и безопасный способ добавить сторонний источник в RHEL-семействе. Почему официальный репозиторий, а не встроенные пакеты: он даёт свежий движок, своевременные обновления и встроенный Docker Compose, тогда как альтернативы в базовых репозиториях либо устарели, либо ведут себя иначе.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS на AlmaLinux 9Ставим движок Docker
Установите сам движок и сопутствующие компоненты, включая плагин Compose, затем включите и запустите службу:
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl enable --now docker
Разберём, что мы ставим. docker-ce — сам движок (Community Edition), docker-ce-cli — команда docker, containerd.io — низкоуровневая среда выполнения контейнеров, docker-compose-plugin — современный Compose. В RHEL-семействе службу принято включать явно командой systemctl enable --now, которая и запускает её, и добавляет в автозагрузку. Убедитесь, что всё работает: systemctl status docker должна показать active (running).
Проверяем установку
Классический тест — запустить крошечный проверочный образ, который скачивается, выводит приветствие и завершается:
docker run hello-world
Если вы увидели сообщение «Hello from Docker!», значит движок скачал образ из реестра, создал из него контейнер, запустил его и корректно завершил — вся цепочка работает. Полезно освоить повседневный набор команд: docker ps показывает работающие контейнеры, docker ps -a — все, включая остановленные, docker logs имя выводит логи контейнера при разборе проблем, docker images перечисляет скачанные образы, а docker system prune освобождает место от неиспользуемых образов. Эти команды образуют ежедневный инструментарий администратора Docker.
Запускаем Docker без sudo
Постоянно писать sudo перед каждой командой docker неудобно. Добавьте своего пользователя в группу docker, и тогда команды можно выполнять напрямую:
usermod -aG docker ваш_пользователь
После этой команды нужно выйти из сессии и зайти заново, чтобы изменение членства в группе вступило в силу. Важно понимать нюанс безопасности: члены группы docker фактически получают права root на сервере, потому что через контейнеры можно смонтировать любую часть системы. Поэтому добавляйте в эту группу только доверенных пользователей и относитесь к такому доступу так же серьёзно, как к sudo. Отдельно отметим: SELinux в AlmaLinux дружит с Docker и добавляет ещё один слой изоляции контейнеров, поэтому отключать его ради Docker не нужно — движок умеет работать с включённым SELinux.
Собираем связки через Docker Compose
Реальные приложения редко состоят из одного контейнера: обычно это веб-сервер, база и кэш вместе. Управлять ими по отдельности утомительно — для этого есть Compose. Вы описываете все сервисы в одном файле compose.yaml, а потом поднимаете весь набор одной командой:
docker compose up -d
Флаг -d запускает контейнеры в фоне. В файле compose.yaml для каждого сервиса указывают образ, порты, переменные окружения и тома для хранения данных. Такой файл — это исполняемое описание всей вашей инфраструктуры: его удобно хранить в системе контроля версий, переносить между серверами и разворачивать заново одной командой. Остановить всё так же просто — docker compose down. Именно Compose превращает Docker из инструмента для одиночных контейнеров в удобное средство развёртывания полноценных приложений.
Стоит с самого начала завести правильную привычку хранения данных, потому что здесь новички теряют информацию чаще всего. Контейнер по своей природе эфемерен: его можно в любой момент удалить и создать заново из образа, и всё, что было записано внутрь него, при этом исчезнет. Поэтому любые данные, которые должны пережить пересоздание контейнера, — содержимое базы, загруженные пользователями файлы, конфигурация — выносят наружу через тома. Именованный том живёт независимо от контейнера: удалили и пересоздали контейнер базы данных, а том с данными остался, и новый контейнер просто подключился к нему. В файле compose это описывается в секции volumes. Приняв это правило сразу, вы избежите классической катастрофы, когда обновление контейнера стирает всю базу. С этим пониманием у вас есть всё для запуска практически любого проекта на стабильной платформе AlmaLinux.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS на AlmaLinux 9Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Docker или podman в AlmaLinux?
В AlmaLinux штатно доступен podman — совместимый с Docker движок без демона. Но если вам нужен именно Docker с его экосистемой и Compose, ставьте docker-ce из официального репозитория, как описано выше.
Данные в контейнере пропадают после перезапуска?
Да, если не использовать тома. Всё, что должно сохраняться (базы, загрузки), выносите в именованные тома или монтируйте в папку хоста, тогда данные переживут пересоздание контейнера.
Нужно ли отключать SELinux для Docker?
Нет, Docker корректно работает с включённым SELinux, который добавляет контейнерам дополнительную изоляцию. Отключение SELinux только ослабит защиту сервера.
Как оплатить VPS под Docker из России?
У MAATRIX доступна оплата картой российского банка, по СБП, криптовалютой и токеном MAAT — иностранная карта не требуется.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.