Данная инструкция описывает процесс установки BAYRELL Cloud OS альфа версии 0.4. Репозиторий с ОС доступен на гихабе.
Базовая настройка и установка Docker Swarm
Для установки Облачной ОС в LXC контейнер воспользуйтесь следующей инструкцией.
1) Перед тем, как устанавливать Облачную ОС настройте саму систему:
2) Обновите систему
apt-get update
apt-get upgrade
3) Установите dnsmasq для Docker Swarm по инструкции
Установка Docker Swarm
1) Установите Docker
curl -sSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker
apt-get install docker-compose
2) В файл /etc/iptables/rules.v4 добавьте строчки перед -A ALLOW-INPUT -j RETURN. Это нужно для Docker Swarm
# Разрешить Docker Swarm
-A ALLOW-INPUT -p tcp -m tcp --dport 2376 -j ACCEPT
-A ALLOW-INPUT -p tcp -m tcp --dport 2377 -j ACCEPT
-A ALLOW-INPUT -p tcp -m tcp --dport 7946 -j ACCEPT
-A ALLOW-INPUT -p udp -m udp --dport 7946 -j ACCEPT
-A ALLOW-INPUT -p udp -m udp --dport 4789 -j ACCEPT
# Разрешаем входящие соединения DNS
-A ALLOW-INPUT -i docker0 -p udp -m udp --dport 53 -j ACCEPT
-A ALLOW-INPUT -i docker0 -p tcp -m tcp --dport 53 -j ACCEPT
-A ALLOW-INPUT -i docker_gwbridge -p udp -m udp --dport 53 -j ACCEPT
-A ALLOW-INPUT -i docker_gwbridge -p tcp -m tcp --dport 53 -j ACCEPT
После перезагрузки данные команды применятся
3) В файле /etc/docker/daemon.json пропишите.
{
"log-driver": "journald",
"log-opts": {
"labels":"com.docker.swarm.service.name"
},
"dns": ["172.17.0.1"]
}
Это нужно для хранения логов рекомендуется journald, чтобы автоматически происходила ротация логов. А также, чтобы контейнеры использовали dnsmasq.
Можно также добавить строчки
"max-concurrent-uploads": 1,
"max-concurrent-downloads": 1,
Они позволяют ограничить количество потоков на загрузку докер образов. По умолчанию 3 потока.
4) В крон через команду sudo crontab -e пропишите команду, которая будет автоматически очищать контейнеры
0 */2 * * * docker system prune --filter "until=24h" -f > /dev/null
5) Создайте кластер
docker swarm init
Если у вас несколько IP адресов у распы, то нужно указать конкретный IP адрес, по которому должен создаваться кластер, например так:
docker swarm init --advertise-addr 192.168.1.25
Важно, что сменить IP адрес потом будет нельзя.
После инициализации кластера, команда выдаст ключ подключения к Docker swarm. Если вы забыли Token, то введите команду docker swarm join-token manager на primary node. Подключитесь к остальным серверам и выполните команду, для того чтобы их подключить к кластеру.
docker swarm join --token TOKEN IP-АДРЕС-ГЛАВНОГО-СЕРВЕРА
Если вы забыли токен, его можно узнать командой:
docker swarm join-token manager
6) Выдайте всем нодам в кластере уникальные имена
Узнать ID нод можно командой
docker node ls
Назначить имя можно командой:
docker node update --label-add name=docker0 raspa1
Рекомендуется первый сервер назвать именем docker0, т.к. это имя далее указано в конфигах Cloud OS.
Проверить назначенные label можно командой
docker node inspect self --pretty
7) Добавьте пользователя ubuntu в группу docker
usermod -a -G docker ubuntu
8) Перезагрузите сервер
init 6
Установка NVIDIA драйверов для нейронных сетей
Данную инструкцию нужно выполнять, если вы собираетесь заниматься искусственным интеллектом. На сервере для этого должна быть установлена видеокарта от NVIDIA.
1) Установите драйвер на сервер. Драйвер должен быть последней версии.
aptitude install nvidia-driver-515-server
2) Установите плагин libnvidia-containuer.
Определите версию Убунту
export distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
Установите ключ nvidia:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
Добавьте репозиторий:
wget https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list -O "/etc/apt/sources.list.d/nvidia-container-toolkit.list"
sed -i 's|deb https://|deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://|g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
Установите Docker плагин:
apt-get update
apt-get install -y nvidia-docker2
3) Добавьте строчки в /etc/docker/daemon.json
{
"log-driver": "journald",
"log-opts": {
"labels":"com.docker.swarm.service.name"
},
"dns": ["172.17.0.1"],
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
4) Перезапустите Docker:
systemctl restart docker
5) Выполните команду:
docker run --rm --gpus all nvidia/cuda:11.7.1-base-ubuntu20.04 nvidia-smi
Если команда выполнилась успешно и указала версию драйвера, значит все установлено корректно.
Установка BAYRELL Cloud OS на сервер
Под пользователем ubuntu выполните:
1) Обновите время
sudo ntpdate -s time.nist.gov
2) Запустите облачную ОС в домашнюю папку
cd ~
git clone https://github.com/bayrell-os/cloud_os
cd cloud_os
Скачайте образы
./cloud_os.sh download
и установите ОС
./cloud_os.sh setup
Подождите пока выполнится скрипт установки. Он также вас попросит ввести логин администратора, и в конце создаст и выведет его на экран.
3) Добавьте в автозапуск облачную ОС
Создайте файл через команду
nano /etc/rc.local
Пропишите в нем команды:
#!/bin/bash
for i in $(seq 0 6); do
sleep 10
docker start cloud_os_standard_1
done
Поставьте флаг выполнения для этого файла
chmod +x /etc/rc.local
4) Установка завершена!
Установка Desktop Client
Для того чтобы установить Desktop Client перейдите по ссылке.