En este documento se describe el procedimiento para compilar y ejecutar una imagen Docker con el software necesario para llevar a cabo las prácticas de la asignatura de Automática y Robótica. La imagen utilizada parte de la imagen oficial de NVIDIA, permitiendo así la aceleración por GPU.
Los scripts de instalación de ROS2, gazebo y el software necesarios están suministrados a través de ros2_setup_scripts_ubuntu.
Para compilar la imagen, utilizamos la orden docker build
. Con el argumento -t
le asignamos el tag que queramos (nombre:version).
docker build . -t {usuario}/ros2-humble-nvidia:{tag}
Opcionalmente, también se puede compilar con docker compose
docker compose build
Iniciar sesión en DockerHub:
docker login
Pushear la imagen.
docker push {usuario}/ros2-humble-nvidia:{tag}
Para crear una instancia de nuestro contenedor, utilizaremos el fichero docker-compose.yaml
. Este fichero contiene la descripción de la imagen que queremos utilizar. Además, incluye:
- Las variables de entorno necesarias para utilizar aplicaciones con GUI.
- Dos volúmenes en el contenedor. Uno de ellos contiene el socket unix de X11 para poder isntanciar interfaces gráficas en el host y el otro monta el directorio actual dentro del contenedor en la ruta
/mnt/scripts
. Esto es muy útil, pues de esta forma podemos modificar los scripts que vayamos a desarrollar desde el PC anfitrión a través del editor de código que queramos y ver los cambios automáticamente reflejados dentro del contenedor.
docker compose up -d
xhost local:root
docker exec -it ros2 bash
docker compose stop
Podemos comprobar que el estado del contenedor es Exited()
a través de
docker ps -a
docker compose start
Podemos comprobar que el estado del contenedor es Up
a través de
docker ps -a
docker compose down
WARNING: Esta acción elimina el contenedor, los volúmenes y la red que crea por defecto. Esta opción no es reversible.