#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
получено с оригинального сайта