не удается запустить docker поверх virtualbox

#docker #ubuntu #virtualbox

Вопрос:

У меня есть файл docker, который создает допустимый образ, работающий на моей Ubuntu 18.04.

Для совместимости с другими машинами я попытался запустить докер на виртуальной машине Ubuntu (и избежать любых ошибок конфигурации, которые могут возникнуть).

моя командная строка запуска докера:

 docker run -id --net=host --rm --privileged --gpus=all --env="NVIDIA_DRIVER_CAPABILITIES=all" --env="DISPLAY" -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix:rw -v /run/user/1000/gdm/Xauthority:/root/.Xauthority --env="QT_X11_NO_MITSHM=1" --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /home/git/:/git --name nirge_sim nirge-sim:1.0
 

Базовый файл docker:

 FROM gazebo:gzserver9-bionic

# nvidia-container-runtime
ENV NVIDIA_VISIBLE_DEVICES 
    ${NVIDIA_VISIBLE_DEVICES:-all}
ENV NVIDIA_DRIVER_CAPABILITIES 
    ${NVIDIA_DRIVER_CAPABILITIES: $NVIDIA_DRIVER_CAPABILITIES,}graphics

# install Utilities
RUN apt-get update -y amp;amp; apt-get install -y apt-utils curl ca-certificates wget 
    amp;amp; rm -rf /var/lib/apt/lists/*

# install gazebo packages
RUN apt-get update -y amp;amp; apt-get install -y --allow-unauthenticated --no-install-recommends 
    libgazebo9-dev 
    amp;amp; rm -rf /var/lib/apt/lists/*

# install ros packages
RUN sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
RUN curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add -

RUN apt-get update amp;amp; apt-get install -y --allow-unauthenticated 
    ros-melodic-desktop-full 
    amp;amp; rm -rf /var/lib/apt/lists/*

RUN apt-get update amp;amp; apt-get install -y --allow-unauthenticated --no-install-recommends 
    ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-ros-control 
    ros-melodic-gazebo-plugins ros-melodic-gazebo-ros  ros-melodic-gazebo-ros
    ros-melodic-simulators 
    amp;amp; rm -rf /var/lib/apt/lists/*

# final config for ros
RUN echo 'source /opt/ros/melodic/setup.bash' >> /root/.bashrc
RUN echo 'export LIBGL_ALWAYS_INDIRECT=1' >>  /root/.bashrc
CMD ["bash"]

 

Так что это работает на моем хосте, но не на моем хостинге через виртуальную коробку.
ошибка в том, что:

 docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: Running hook #0:: error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown.
 

Буду признателен за любые советы по этому вопросу.

Комментарии:

1. Учитывая количество функций Docker, которые вы отключаете, и учитывая, что у вас уже есть виртуальная машина в качестве уровня изоляции, имеет ли смысл просто напрямую запускать программу внутри виртуальной машины без участия Docker?

2. Вы правы, но я бы хотел сохранить его в Докере для быстрого сброса моделируемой среды. Кроме того, это помогает в дальнейшей автоматизации.

Ответ №1:

Похоже, что для одной из зависимостей (Gazebo) требуется выделенный графический процессор, который не моделируется как часть VirtualBox.

Nvidia cards tend to work well in Ubuntu получено с оригинального сайта