Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
There are two ways to run ODM through Docker. One pulls the image from the Docker Hub and the other builds the image manually from a Dockerfile. OpenDroneMap is Dockerized, meaning you can use containerization to build and run it without tampering with the configuration of libraries and packages already installed on your machine. Docker software is free to install and use in this context. If you don't have it installed, see the Docker Ubuntu installation tutorial and follow the instructions up until "Create a Docker group" inclusive. You can also run docker on Windows and OSX.
Option 1: Pull from Docker Hub
This method is the fastest and most fool-proof method for running OpenDroneMap. You only need to run one command:
docker run -it --rm -v "$(pwd)/images:/code/images" -v "$(pwd)/odm_orthophoto:/code/odm_orthophoto" -v "$(pwd)/odm_georeferencing:/code/odm_georeferencing" opendronemap/opendronemap --mesh-size 100000
This will pull an ODM docker image from the hub and run through it. Let's break down each part.
docker run -it --rm
-it instructs Docker to allocate a pseudo-TTY connected to the container’s stdin; creating an interactive bash shell in the container.
--rm will remove the container to save space (ODM projects can get big)
-v $(pwd)/images:/code/images -v $(pwd)/odm_orthophoto:/code/odm_orthophoto -v $(pwd)/odm_georeferencing:/code/odm_georeferencing
Here we are connecting 3 volumes. The path before the colon is the local, or host, path, and after the colon is the container path. Do not change the container path.
$(pwd)/images is your input directory. and can be any absolute path. In our example, we use
$(pwd) as shorthand for the absolute path to the current working directory. You can specify
-v <path>:<path> any number of times. When ODM is done running, you can find the ODM products in
$(pwd)/odm_georeferencing or whatever volume you mount.
This is the tag that docker will use to find the OpenDroneMap image. If it is not found locally (i.e. it's your first time running) then it will look on Docker Hub and pull the image.
Here is where you can pass in any parameter for OpenDroneMap. See here for all the possible parameters.
Option 2: Installation from source
(Instructions below apply to Ubuntu 14.04, but the Docker image workflow has equivalent procedures for Mac OS X and Windows. See docs.docker.com)
Once Docker is installed, an OpenDroneMap Docker image can be created like so:
git clone https://github.com/OpenDroneMap/OpenDroneMap.git cd OpenDroneMap docker build -t my_odm_image .
This run command is the same as in option 1 except you will specify
my_odm_image as the tag instead of
docker run -it --rm \ -v $(pwd)/images:/code/images \ -v $(pwd)/odm_orthophoto:/code/odm_orthophoto \ -v $(pwd)/odm_texturing:/code/odm_texturing \ my_odm_image
You can see a breakdown in the section above.
Checking & Changing default Docker settings (RAM and CPUs)
Before running ODM it's advised to check that Docker is allocating sufficient resources to containers. In Windows this can be done in the 'Docker for Windows' program under the 'Advanced' tab.