Установка и настройка LXC
2) Установите Nvidia драйвера для Tensorflow и PyTorch для Ubuntu
Установка Nvidia LXC контейнера
1) Установите контейнер docker0. Создавать будем контейнер с названием nvidia
_x000D_lxc-create -t download -n nvidia -- --dist ubuntu --release jammy --arch amd642) Внесите изменения в файл /var/lib/lxc/nvidia/config
Раскоментируйте строку
_x000D_lxc.include = /usr/share/lxc/config/nesting.confЭто позволит создать Nested контейнер — возможность запустить контейнер в контейнере (вложенные контейнеры).
Добавьте в файл следующие строки
_x000D_lxc.net.0.ipv4.address = 172.30.0.25/24_x000D_lxc.net.0.ipv4.gateway = 172.30.0.1_x000D_lxc.mount.auto = cgroup-full:rw_x000D_lxc.apparmor.profile = unconfined_x000D_lxc.cgroup.devices.allow = a_x000D_lxc.cap.drop =_x000D__x000D_# nvidia driver_x000D_lxc.cgroup.devices.allow = c 195:* rwm_x000D_lxc.cgroup.devices.allow = c 243:* rwm_x000D_lxc.cgroup.devices.allow = c 510:* rwm_x000D_lxc.cgroup2.devices.allow = c 195:* rwm_x000D_lxc.cgroup2.devices.allow = c 243:* rwm_x000D_lxc.cgroup2.devices.allow = c 510:* rwm_x000D_lxc.mount.entry = /dev/nvidia0 dev/nvidia0 none bind,optional,create=file_x000D_lxc.mount.entry = /dev/nvidiactl dev/nvidiactl none bind,optional,create=file_x000D_lxc.mount.entry = /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file_x000D_lxc.mount.entry = /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file_x000D_lxc.mount.entry = /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file_x000D_Если будете настраивать Docker Swarm, то закоментируйте строки
_x000D_#lxc.idmap = u 0 100000 65536_x000D_#lxc.idmap = g 0 100000 65536Настройка контейнера
1) Установка docker:
_x000D_curl -sSL https://get.docker.com | sh_x000D_systemctl enable docker_x000D_systemctl start docker_x000D_apt-get install docker-compose2) В крон через команду sudo crontab -e пропишите команду, которая будет автоматически очищать контейнеры
_x000D_0 */2 * * * docker system prune --filter "until=24h" -f > /dev/null3) Установите драйвер в LXC контейнер. Драйвер должен быть той же версии, что и на хосте. Ниже команда устанавливает драйвер версии 515. Если у вас новее драйвер, поставьте другую версию.
Версия драйвера в LXC должна совпадать с версией драйвера на хост системе.
_x000D_apt-get install nvidia-driver-535-server4) Установите плагин libnvidia-containuer.
Установите ключ nvidia:
_x000D_curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/nvidia-container-toolkit-keyring.gpg_x000D_Добавьте репозиторий:
_x000D_wget https://nvidia.github.io/libnvidia-container/stable/deb/libnvidia-container.list -O "/etc/apt/sources.list.d/nvidia-container-toolkit.list"Установите Docker плагин:
_x000D_apt-get update_x000D_apt-get install -y nvidia-docker25) Добавьте строчки в /etc/docker/daemon.json
_x000D_{_x000D_ "log-driver": "journald",_x000D_ "log-opts": {_x000D_ "labels":"com.docker.swarm.service.name"_x000D_ },_x000D_ "default-runtime": "nvidia",_x000D_ "runtimes": {_x000D_ "nvidia": {_x000D_ "path": "nvidia-container-runtime",_x000D_ "runtimeArgs": []_x000D_ }_x000D_ }_x000D_}6) Перезапустите Docker:
_x000D_systemctl restart docker7) Выполните команду:
_x000D_docker run --rm --gpus all nvidia/cuda:11.7.1-base-ubuntu20.04 nvidia-smiЕсли команда выполнилась успешно и указала версию драйвера, значит все установлено корректно.