Docker throwing error in latest version of Qiime

Hello,

I ran into an error while running the Qiime through Docker on the most recent two versions of Qiime. I started the Docker container as per the tutorial:

docker run --rm -it \
    -u $(id -u):$(id -g) \
    -v $(pwd):/data \
    quay.io/qiime2/core:2022.2 \
        /bin/bash

However, when I try to run any command (except help commands) I got this error:

cannot cache function 'rdist': no locator available for file '/opt/conda/envs/qiime2-2022.2/lib/python3.8/site-packages/umap/layouts.py'

I checked back a few versions, and found that the last working version that does not throw this error is 2021.8. The last two versions (2021.11 and 2022.2) throw this error. All versions I tried before this seemed fine. For the record, I tried this on a server and two different (mac) laptops and got the same result. The version 2021.8 works on all these OS. To check that it wasn't my own command, I ran commands from the Moving Pictures tutorial, with files downloaded from the tutorial web site. Version 2021.8 works on the MP commands and my own commands.

I usually use the standard conda install, but I am setting up a large pipeline to run through Kubernetes (with Pachyderm) on a server, so Qiime has to run through a Docker image. I would like to use the most recent version of Qiime.

Cheers,

Hugh

Hi @hugh,

Welcome back to the :qiime2: forum!

I just installed QIIME 2 2022.2 via Docker on my machine to see if I got the same error message, but everything is working on my end - so there must be an issue with your installation. Can you please run the following commands and copy/paste the full output in your response?

docker pull quay.io/qiime2/core:2022.2
docker run -t -i -v $(pwd):/data quay.io/qiime2/core:2022.2 qiime

Thanks! :lizard:

Hi @lizgehret,

Thanks for getting back to me so fast! I ran the commands and got the standard Qiime2 output. The issue before actually occurred when trying to run a command on data. Happily, the test command I used produced the output normally.

docker run -t -i -v $(pwd):/data quay.io/qiime2/core:2022.2 \
  qiime demux emp-single \
  --i-seqs emp-single-end-sequences.qza \
  --m-barcodes-file sample-metadata.tsv \
  --m-barcodes-column barcode-sequence \
  --o-per-sample-sequences demux.qza \
  --o-error-correction-details demux-details.qza

which produced the nice green message:

Saved SampleData[SequencesWithQuality] to: demux.qza
Saved ErrorCorrectionDetails to: demux-details.qza

The main difference I can see between the command you supplied and what I got from the earlier tutorial moving-pictures in Docker was the use of the -u user argument. Clearly I did not understand that part of it, and it seems it can be left out. When I added the -u part of the command I got the error again:

docker run -t -i -u $(id -u):$(id -g) \
  -v $(pwd):/data quay.io/qiime2/core:2022.2 \
  qiime demux emp-single \
  --i-seqs emp-single-end-sequences.qza \
  --m-barcodes-file sample-metadata.tsv \
  --m-barcodes-column barcode-sequence \
  --o-per-sample-sequences demux.qza \
  --o-error-correction-details demux-details.qza

Output:

There was a problem loading emp-single-end-sequences.qza as a QIIME 2 Result:

  cannot cache function 'rdist': no locator available for file '/opt/conda/envs/qiime2-2022.2/lib/python3.8/site-packages/umap/layouts.py'

However, when running a simple help command as the example you gave, the output is fine:

docker run -t -i -u $(id -u):$(id -g) \
  -v $(pwd):/data quay.io/qiime2/core:2022.2 \
  qiime
Usage: qiime [OPTIONS] COMMAND [ARGS]...

  QIIME 2 command-line interface (q2cli)
  --------------------------------------

  To get help with QIIME 2, visit https://qiime2.org.

etc......

I am happy to just leave the -u part out of my Qiime Docker commands, but do you have any idea why the user command is throwing that error? Or, do we ever need to use that argument?

Thanks!

Hi @hugh,

I'm glad that worked for you!

I'm not sure where that issue is stemming from, but I suspect it has something to do with Kubernetes - I don't have any experience using Kubernetes for container management, but the permissions might be completely different than they are elsewhere. With that being said, if everything works without specifying the user in your Docker container, I would just move forward without that in your current setup.

The user flag is typically included for folks who need to specify their user/group settings to ensure they have permissions to read/write/execute commands within their Docker container.

Hope this helps! Cheers :lizard:

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

Hey @hugh and @lizgehret,

Just wanted to say I ran into this while googling an issue with our docker container for the upcoming release. This thread was helpful to realize it wasn't a local issue on my machine. I've figured out the fix, and it should be possible to use -u with our docker images in this upcoming release!

Thanks!

1 Like

Awesome, thanks for circling back on this and working on that fix @ebolyen!