Oddmar Dam edited this page Jan 7, 2018 · 6 revisions

Docker

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.

opendronemap/opendronemap

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.

--mesh-size 10000

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 .

Running

This run command is the same as in option 1 except you will specify my_odm_image as the tag instead of opendronemap/opendronemap.

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.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.