Большинство руководств по установке Docker предполагают systemd систему, которая позволяет пользователям Void Linux переводить команды на лету. Void использует Runit в качестве своей системы init, поэтому службы включения и управления работают по-разному.
Это руководство охватывает установку Docker Engine и Docker Compose на Void Linux, проверку работы всего, запуск многоконтейнерного приложения с Compose и управление службой Docker через рунит.
Предварительные условия
- Сервер под управлением Void Linux.
- Привилегии пользователя: пользователь root или не root с привилегиями sudo.
Конвенции
| |
Обновите систему
Свежая установка Void Linux требует обновления пакетов до последних доступных версий.
| |
После того, как xbps включен, запустите полное обновление системы.
| |
Система может нуждаться в перезагрузке после обновления.
| |
Установить Docker Engine
Docker поставляется в официальных хранилищах Void, поэтому сторонние репозитории не нужны.
| |
Это включает в себя Docker Engine, контейнер и инструменты CLI. Подтвердите установленную версию:
| |
На выходе должен быть показан Docker 29.4.0 или новее:
| |
Включить и запустить Docker
Void Linux использует рунит вместо systemd. Здесь нет возможности systemctl enable. Чтобы включить и запустить услугу, вы создаете симлинк из /etc/sv/ в /var/service/. Рунит поднимает его в течение пяти секунд и автоматически запускает демон.
| |
Дайте руниту минуту, затем проверьте статус сервиса:
| |
Вы должны увидеть службу, работающую с PID и временем безотказной работы:
| |
Если Docker не создаст контейнеры позже с ошибками в /run/user/0, создайте этот каталог вручную. Это застает большинство людей врасплох на свежей установке Void:
| |
Проверьте установку Docker
Команда docker info подтверждает работу и показывает конфигурацию хранилища и группы:
| |
Ключевые детали вывода:
| |
Обратите внимание на водителя cgroupfs. Void не использует systemd, поэтому Docker по умолчанию использует cgroupfs v2, что именно то, что вы хотите здесь.
Теперь тест с классическим контейнером Hello-world:
| |
Полный вывод подтверждает, что Docker может извлекать изображения и запускать контейнеры:
| |
Установить Docker Compose
Docker Compose также доступен в хранилищах Void. Упакованная версия - это плагин Compose v2 на основе Python.
| |
Проверьте установленную версию:
| |
Результаты подтверждают Compose v5.1.2:
| |
Развертывание многоконтейнерного приложения
Чтобы провести настоящий тест, создайте проект с Nginx и MariaDB. Это типичный шаблон для веб-приложений.
Создайте каталог проектов и файл Compose:
| |
Откройте файл Compose для редактирования:
| |
Добавить следующую конфигурацию:
| |
Поднимите оба контейнера в отдельном режиме:
| |
Compose выводит изображения и запускает оба сервиса:
| |
Убедитесь, что оба контейнера работают:
| |
Оба должны показать статус Up:
| |
Испытайте контейнер Nginx с curl:
| |
Страница приветствия Nginx по умолчанию подтверждает, что веб-контейнер обслуживает трафик:
| |
Чтобы снести стопку, когда закончите:
| |
Управляйте Docker как некорневым пользователем
Запуск каждой команды Docker с помощью sudo быстро устаревает. Добавьте пользователя в группу docker для запуска контейнеров без привилегий root.
| |
Применить членство в группе без выхода из системы:
| |
Подтвердите, что он работает, запуская контейнер без sudo:
| |
Вы должны увидеть:
| |
Имейте в виду, что любой человек в группе docker имеет доступ к хосту на корневом уровне через контейнерные крепления. Добавьте только надежных пользователей.
Обслуживание Runit
Модель Runit проще, чем systemd, но есть одно поведение, которое удивляет новичков: создание симлинка в /var/service/ позволяет и сразу же запускает сервис. Отдельного enable шага, ожидающего следующей перезагрузки, не существует. Рунит сканирует /var/service/ каждые пять секунд и запускает все новое.
Обратное также верно. Удаление симлика с помощью rm /var/service/docker останавливает работу службы и предотвращает ее запуск при загрузке. Это отличается от systemd, где отключение systemctl disable влияет только на поведение загрузки и не останавливает текущий сервис.
Завершение
Вы успешно узнали, как установить Docker на Void Linux, а также как создавать и использовать простые команды контейнера Docker.
Вы также можете поделиться статьей со своими друзьями в социальных сетях, которым может быть интересна эта статья, или просто оставить комментарий ниже. Спасибо.