Si vous cherchez une meilleure solution, allez et vérifiez le référentiel Rocker d'Osrf
Ce script vous permet de créer des conteneurs Docker où vous pouvez exécuter des programmes graphiques comme Gazebo sans trop d'effort. Cette automatisation imite votre installation locale et vous permet d'exécuter vos programmes dans un environnement de bac à sable. Il monte votre répertoire domestique dans le conteneur et partage les mêmes variables utilisateur.
Il n'est pas nécessaire d'installer ce "package". Mais si vous souhaitez que vous puissiez faire quelque chose comme:
~/.dockerize~/.dockerize/usr/local/bin/dockerize ~./.dockerize/dockerize.sh symbalROS_DISTRO=noetic dockerize n'importe où cd ~
git clone https://github.com/incebellipipo/dockerize .dockerize
sudo ln -s ~ /.dockerize/dockerize.sh /usr/local/bin/dockerizeConstruire des images
La construction d'images est assez simple. Le script construit l'image avec la version ROS décrite dans la variable d'environnement ROS_DISTRO . Il pourrait être défini sur les versions de ROS qui sont publiées dans Docker Hub.
ROS_DISTRO=humble ./dockerize.sh buildExécuter des images
./dockerize.sh run L'utilisateur n'appartient à aucun groupe lors de la première exécution. Vous pouvez le vérifier en exécutant groups en cours d'exécution. Ainsi, après vous être connecté au conteneur, vous devez vous connecter à nouveau pour être dans les groupes dans lesquels votre utilisateur local appartient. Ceci est nécessaire pour accéder aux appareils comme /dev/dri et /dev/snd , etc.
# Inside Docker
$ su - ${USER}
Password:Lors de l'exécution du conteneur, vous pouvez utiliser le développement à distance TMUX ou VSCODE pour faire du développement.
Coutre de course à pied
ROS_DISTRO=humble ./dockerize.sh attachArrêter de courir de coulé
ROS_DISTRO=humble ./dockerize.sh stopNettoyage des conteneurs détachés
ROS_DISTRO=humble ./dockerize.sh cleanSur l'hôte
export NVIDIA_DRIVER_VERSION="$(nvidia-smi --query-gpu=driver_version --format=csv,noheader)"
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/"$NVIDIA_DRIVER_VERSION"/NVIDIA-Linux-x86_64-"$NVIDIA_DRIVER_VERSION".run
mv NVIDIA-Linux-x86_64-"$NVIDIA_DRIVER_VERSION".run NVIDIA-DRIVER.run
Dans le conteneur
sudo ./NVIDIA-DRIVER.run -a -N --ui=none --no-kernel-module
Crédits: https://stackoverflow.com/a/44187181
Personnalisez comme créer n'importe quel autre dockerfile.