ODM docker processing fails while runing the same from WebODM works

Hello!

I’m having problem while processing images by simple call of docker command:

docker run -u 1000:1000 -ti --rm -v "${PWD}":/datasets opendronemap/odm:latest  --auto-boundary --cog --crop 3 --dem-decimation 1 --dem-gapfill-steps 3 --dem-resolution 5 --depthmap-resolution 640 --dsm --end-with odm_postprocess --feature-quality high --feature-type sift --gps-accuracy 10 --matcher-neighbors 8 --matcher-type flann --max-concurrency 16 --merge all --mesh-octree-depth 11 --mesh-size 200000 --min-num-features 10000 --orthophoto-compression DEFLATE --orthophoto-resolution 5 --pc-ept --pc-filter 2.5 --pc-quality medium --pc-sample 0 --primary-band auto --radiometric-calibration none --resize-to 2048 --sfm-algorithm incremental --smrf-scalar 1.25 --smrf-slope 0.15 --smrf-threshold 0.5 --smrf-window 18.0 --split 999999 --split-overlap 150 --texturing-data-term gmi --texturing-outlier-removal-type gauss_clamping --texturing-tone-mapping none --project-path /datasets --rerun-all project_small

It fails with an error:

                "[ERROR] Src/CoredMesh.h (Line 166)",
                "BufferedReadWriteFile",
                "Failed to open file: ./PR__points_DpGohO"

At the same time, processing from WebODM proceed without any problem. I used the same parameters, copied from WebODM’s default profile.

Here are logs from ODM run by docker:

And logs from proper processing run by WebODM:

I want to publish a testing set of images, but I’m waiting now for permission from the owner.

What is the difference between running ODM using docker and by WebODM?
Why it may fail?

1 Like

I’ve found what was the problem!

docker run -u 1000:1000

I run docker container’s ODM processing as not root user and in this case processing failed…
Should I report a bug for this? There should be possibility to run it as a normal user.

1 Like

If I understand the problem, you will need to add your user to the docker group:
sudo usermod -aG docker ${USER}

Then log out and log back in. This is generally preferred to running docker as the root user.

1 Like

No, that’s not my problem. My system (host) user is already added into docker group.
I want to run docker container processing as a user with id 1000 and group 1000 (not root). In this case, docker container’s user doesn’t have root rights, and it creates output files in a volume with user (1000:1000) as an owner.

There is an issue with ODM processing as non-root user, probably during processing there are written some temporary files in a location restricted for root instead of e.g. /tmp. That’s my guess.

1 Like

Ah, I don’t know then. I have never tried to run docker rootless, I always just assumed you’d want to use singularity or podman if you wanted rootless. Perhaps it is strictly speaking a bug, though I try not to think this deeply about containers :D. Feel free to open a bug report at GitHub - OpenDroneMap/ODM: A command line toolkit to generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images. 📷 if you think it is. Bonus points if it is something you could provide a patch for.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.