Nvidia-Docker2 не устанавливается в bash-скрипт Cloudformation UserData

У меня есть шаблон cloudformation, который я создал в надежде развернуть экземпляр ec2 с необходимыми зависимостями (где эти зависимости установлены как bash в UserData), чтобы использовать аппаратное обеспечение графического процессора в контейнере докеров. Основные зависимости: 1) драйверы nvidia, 2) докер и 3) nvidia-docker2.

Первые две зависимости устанавливаются, как и ожидалось, и после нескольких моментов работы их можно проверить с помощью 1) nvidia-smi и docker --version. Однако третья зависимость последовательно не устанавливается.

Для справки, вот соответствующие части моего bash UserData:

          # install gpu stuff
          apt-get install linux-headers-$(uname -r)
          distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g')
          wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-$distribution.pin
          mv cuda-$distribution.pin /etc/apt/preferences.d/cuda-repository-pin-600
          apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/7fa2af80.pub
          echo "deb http://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64 /" | tee /etc/apt/sources.list.d/cuda.list
          apt-get update
          apt-get -y install cuda-drivers

          # install docker on system
          curl https://get.docker.com | sh
          systemctl start docker && systemctl enable docker

          distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
          curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | apt-key add -
          curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | tee /etc/apt/sources.list.d/nvidia-docker.list

          apt-get -y install nvidia-docker2 > /var/log/mason

          # add nvidia runtime stuff
          # echo "{ \"runtimes\": { \"nvidia\": { \"path\": \"/usr/bin/nvidia-container-runtime\", \"runtimeArgs\": [] } } }" >> /etc/docker/daemon.json

          systemctl restart docker

Я попытался передать стандартный вывод из apt-get -y install nvidia-docker2 в файл журнала, но журналы показывают только:

Reading package lists...
Building dependency tree...
Reading state information...

и, кажется, застрял там.

Другие потенциально полезные биты:

  • AMI: образ Ubuntu 18.04

Я также отмечу, что я могу подключиться к экземпляру по SSH и установить apt-get -y install nvidia-docker2 в командном терминале без заминок (или любой подсказки пользователя или чего-то еще).

Может ли кто-нибудь помочь мне понять, как решить эту проблему, или кто-нибудь видит какие-либо потенциальные проблемы в том, что я поделился выше? stdout pipe to file — это единственный известный мне способ отладки такой проблемы. Пожалуйста, дайте мне знать, если я могу обновить/отредактировать этот пост, чтобы упростить отладку этой проблемы.


person Mason Edmison    schedule 14.10.2020    source источник
comment
Вы проверили какие-либо журналы для UserData, чтобы проверить, что может происходить?   -  person Marcin    schedule 15.10.2020
comment
Привет, где эти журналы для UserData?   -  person Mason Edmison    schedule 15.10.2020
comment
Ах, я полагаю, вы имеете в виду файл cloud-init-output.log... Хороший звонок, я ранее искал в term.log. Похоже, журналы cloud-init показывают, что невозможно найти пакет nvidia-docker2, что странно, поскольку я добавляю репозиторий.   -  person Mason Edmison    schedule 15.10.2020
comment
Вы запускаете apt-get update после добавления репозитория?   -  person Marcin    schedule 16.10.2020
comment
На самом деле я этого не сделал, и это была моя проблема! Ха.   -  person Mason Edmison    schedule 16.10.2020
comment
Рад слышать. Если вы не возражаете, я дам ответ для дальнейшего использования.   -  person Marcin    schedule 17.10.2020


Ответы (1)


На основании комментариев.

Проблема была вызвана тем, что репозитории Ubuntu не обновлялись после добавления репозитория nvidia-docker2.

Решение состояло в том, чтобы запустить apt-get update после добавления репозитория.

person Marcin    schedule 16.10.2020