Docker - norlab-ulaval/SNOW-sim_internship_H22 GitHub Wiki
SSIM-Sim (Youtrack) • SNOW (WebSite) • isabelleysseric (Docker Hub) • SNOW-sim (GitHub) • Wiki SNOW-sim (Wiki)
After finding the ideal simulator for our research laboratory, we had to deploy it. On this page you will find all the necessary information on the images of Gazebo Ignition (Fortress version) in order to be able to install it in a Docker environment or directly on your computer with the bash files.
Figure: Docker from K21Academy website
The Gazebo-Ignition folder is an image of the binary installation of Gazebo Ignition without the ROS integration and the Docker-compose-ignition folder contains the images of its source installation plus the ROS2 integration and the bridge for the ROS1 integration Noetic.
In this folder you have several installation methods (Binary or Source) but also several versions of Ubuntu (18.04 or 20.04) or several versions of Gazebo Ignition (Fortress or others).
Currently, there is Gazebo Ignition (Fortress) on Ubuntu 20.04 but you have a choice with the installation (Binary or Source).
Plateform
- Ubuntu 20.04 (Focal)
Gazebo Ignition Versions
- Fortress
Installations Type
- Binary
- Source
GeeksforGeeks: Somes tutorials for Docker
Docker Docs: Get Started - Part 2: Sample application
Docker Docs: Docker Desktop for Linux (Beta)
DockerHub: hello-world
DockerHub gazebo Official image
DockerHub: naokitakahashi12/ignition
Github: Gazebo Ignition tooling - gzdev
Github: NaokiTakahashi12/docker-ignition-robotics
How to Get Started with Docker
Step 1: Download the folder docker-ignition
sudo git clone https://github.com/norlab-ulaval/SNOW-sim_internship_H22/tree/main/DOCKER_Ignition.git
Step 2: Extract it on /home/user/
unzip docker-ignition.zip
Step 3: Build all containers from the folder docker-ignition
cd /home/user/docker-ignition/
make build
Step 4: Build a specific container, for example here: binary/focal/fortress
cd /home/user/docker-ignition/
make fortress-focal
Link: GeeksforGeeks - Intrduction to Docker
Link: Docker tutorial - DockerHub
My Variables:
<user>: Norlab
<image name>: python-test
<image ID>: 8ddf308587b2
<tag>: latest
<DockerHub username>: isabelleysseric
Create a Docker container:
Step 1: Create a folder with 2 files
gedit /home/<user>/Dockerfile
gedit /home/<user>/main.py
Step 2: Create a Docker image
docker build -t <image name> .
Step 3: Run the Docker image
docker run <image name>
Step 4: See list Docker images
docker images
Push on Docker Hub:
Step 5: Login on Hub Docker
docker login
docker login -u <username>
focker login -u <username> -p <password>
Step 6: Create Repository on Hub Docker Link: https://hub.docker.com/repositories
Step 6: Tag your image
docker tag <image ID> <DockerHub username>/<image name>:<tag>
Step 7: Push your image to Docker Hub repository
docker push <DockerHub username>/<image name>
Load/Save from Docker Hub:
Step 8: Fetch the image from Docker Hub
docker rmi -f <image ID>
Step 8: Run the image from Docker Hub
docker run <DockerHub username>/python-test
Step 9: Save the Docker image
docker save <image name> > <image name>.tar
Step 10: Load the Docker container from the archived taf file
docker load --input <image name>.tar
Figure: troubleshooting-it-admin from Tenor site
Hello, during my project to create a Docker container for the Gazebo Ignition simulator (Fortress version) I had some problems and found some solutions. Some solutions solved my problems, others not completely so if you have better solutions or other problems that you have solved and that you would like to share, do not hesitate to share them I will add them to the list.
Thank you for your contribution and hoping that this section can help you too.
- PROBLEM 1: Docker login
Problem:
docker login
Solution: delete the file config.json from /home/user/.docker/ on your desktop.
rm -R /home/<user>/.docker/config.json
docker login
- PROBLEM 2: Docker login
Problem:
sudo docker login
Error saving credentials: error storing credentials - err: exit status 1, out: `pass not initialized: exit status 1: Error: password store is empty. Try "pass init".`
Solution:
wget https://github.com/docker/docker-credential-helpers/releases/download/v0.6.0/docker-credential-pass-v0.6.0-amd64.tar.gz
unpack tar -xf docker-credential-pass-v0.6.0-amd64.tar.gz
docker-credential-pass
apt install gpg pass
gpg --generate-key
pass init <gpg-id>
pass insert docker-credential-helpers/docker-pass-initialized-check
docker-credential-pass list
nano ~/.docker/config.json
"credsStore": "pass"
docker login
- PROBLEM 3: WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Problem:
apt install python
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Solution:
RUN apt-get install python
- PROBLEM 4: debconf: delaying package configuration, since apt-utils is not installed
Problem:
debconf: delaying package configuration, since apt-utils is not installed
Solution:
apt-get install apt-utils
- PROBLEM 5: gpg: can't connect to the agent: No such file or directory
Problem:
gpg: failed to start agent '/usr/bin/gpg-agent': No such file or directory
gpg: can't connect to the agent: No such file or directory
Solution:
apt-get install gpg-agent
- PROBLEM 6: E: Unable to locate package –yes
Problem:
–assume-yes
E: Unable to locate package –yes
Solution: check for the first symbole
-assume-yes
- PROBLEM 7: qt.qpa.xcb: could not connect to display
Problem:
sudo docker run -it <myimage>
root@ ign gazebo shapes.sdf
Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin/platforms" ...
loaded library "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so"
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.
[Err] [Server.cc:109] Failed to find world []
Solution: It's not perfect, so if you have better, tell me please.
ENV QT_DEBUG_PLUGINS=1
Or
ENV DEBIAN_FRONTEND=noninteractive
…
ENV DEBIAN_FRONTEND=teletype
- PROBLEM 8 : dpkg-preconfigure: unable to re-open stdin
Problem:
dpkg-preconfigure: unable to re-open stdin
Solution:
# Use baseimage-docker's init system after your ENV and before your RUN
CMD ["/sbin/my_init"]
- PROBLEM 9 : Warning: apt-key output should not be parsed
Problem:
Warning: apt-key output should not be parsed (stdout is not a terminal)
Solution:
RUN apt-get
- PROBLEM 10 : pybind11 is missing: Python interfaces are disabled
Problem:
--- stderr: ignition-math6
CMake Warning at /ign_ws/install/share/cmake/ignition-cmake2/cmake2/IgnConfigureBuild.cmake:55 (message):
CONFIGURATION WARNINGS:
-- pybind11 is missing: Python interfaces are disabled.
Call Stack (most recent call first):
CMakeLists.txt:101 (ign_configure_build)
---
Solution: I don't have the solution yet
- PROBLEM 11: Missing dependency [pxr]
Problem:
--- stderr: sdformat12
CMake Warning at /ign_ws/install/share/cmake/ignition-cmake2/cmake2/IgnConfigureBuild.cmake:55 (message):
CONFIGURATION WARNINGS:
-- Skipping component [usd]: Missing dependency [pxr].
^~~~~ Set SKIP_usd=true in cmake to suppress this warning.
Call Stack (most recent call first):
CMakeLists.txt:122 (ign_configure_build)
---
Solution: I don't have the solution yet
- PROBLEM 12: Missing dependency [DART]
Problem:
--- stderr: ignition-physics5
CMake Warning at /ign_ws/install/share/cmake/ignition-cmake2/cmake2/IgnUtils.cmake:197 (find_package):
Found package configuration file:
/usr/share/dart/cmake/DARTConfig.cmake
but it set DART_FOUND to FALSE so package "DART" is considered to be NOT
FOUND.
Call Stack (most recent call first):
CMakeLists.txt:68 (ign_find_package)
CMake Warning at /ign_ws/install/share/cmake/ignition-cmake2/cmake2/IgnConfigureBuild.cmake:55 (message):
CONFIGURATION WARNINGS:
-- Skipping component [dartsim]: Missing dependency [DART] (Components: collision-bullet, collision-ode, utils, utils-urdf).
^~~~~ Set SKIP_dartsim=true in cmake to suppress this warning.
Call Stack (most recent call first):
CMakeLists.txt:100 (ign_configure_build)
---
Solution: I don't have the solution yet
- PROBLEM 13: Missing dependency [OptiX]
Problem:
Starting >>> ignition-rendering6
--- stderr: ignition-rendering6
CUDA_TOOLKIT_ROOT_DIR not found or specified
CMake Warning at /ign_ws/install/share/cmake/ignition-cmake2/cmake2/IgnConfigureBuild.cmake:55 (message):
CONFIGURATION WARNINGS:
-- Skipping component [optix]: Missing dependency [OptiX].
^~~~~ Set SKIP_optix=true in cmake to suppress this warning.
Call Stack (most recent call first):
CMakeLists.txt:170 (ign_configure_build)
---
Solution: I don't have the solution yet
- PROBLEM 14 : Could not find a package configuration file provided by "..."
Problem:
--- stderr: ignition-sensors6
CMake Warning at /ign_ws/install/lib/cmake/ignition-rendering6/ignition-rendering6-config.cmake:195 (find_package):
By not providing "Findignition-rendering6-ogre2.cmake" in CMAKE_MODULE_PATH
this project has asked CMake to find a package configuration file provided
by "ignition-rendering6-ogre2", but CMake did not find one.
Could not find a package configuration file provided by
"ignition-rendering6-ogre2" (requested version 6.3.1) with any of the
following names:
ignition-rendering6-ogre2Config.cmake
ignition-rendering6-ogre2-config.cmake
Add the installation prefix of "ignition-rendering6-ogre2" to
CMAKE_PREFIX_PATH or set "ignition-rendering6-ogre2_DIR" to a directory
containing one of the above files. If "ignition-rendering6-ogre2" provides
a separate development package or SDK, be sure it has been installed.
Call Stack (most recent call first):
/ign_ws/install/share/cmake/ignition-cmake2/cmake2/IgnUtils.cmake:197 (find_package)
CMakeLists.txt:69 (ign_find_package)
---
Solution: I don't have the solution yet