# Why docker/singulariy over conda?

**URL:** <https://community.seqera.io/t/why-docker-singulariy-over-conda/700>\
**Category:** Ask for help\
**Created:** [April 26, 2024, 4:07pm UTC](https://community.seqera.io/t/why-docker-singulariy-over-conda/700 "2024-04-26T16:07:45Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![arriyaz](https://dub1.discourse-cdn.com/flex013/user_avatar/community.seqera.io/arriyaz/32/666_2.png) [@arriyaz](https://community.seqera.io/u/arriyaz)\
**Post date:** [April 26, 2024, 4:07pm UTC](https://community.seqera.io/t/why-docker-singulariy-over-conda/700/1 "2024-04-26T16:07:45Z")

</div>

Hi, I am a new user of Nextflow. Currently, I am learning Nextflow and planning to use it for my computational biology workflows.

While I was trying to run some pipelines from nf-core I found a note “ **Please only use Conda as a last resort** ”. I understand that Nextflow prefers docker/singularity over conda.

I wonder, why? What are the advantages of using docker/singularity, especially when I run the pipeline locally?

I found that docker images are quite large sizes compared to conda.  
And, it is easier to set up a conda environment (at least for me).

But, I see Nextflow strongly suggests using docker, then I think I am missing something.

Thank you.

---

<div class="post-metadata">

**Author:** ![emiller](https://dub1.discourse-cdn.com/flex013/user_avatar/community.seqera.io/emiller/32/79_2.png) [@emiller](https://community.seqera.io/u/emiller)\
**Post date:** [April 26, 2024, 6:47pm UTC](https://community.seqera.io/t/why-docker-singulariy-over-conda/700/2 "2024-04-26T18:47:00Z")

</div>

Hey!

We’ve hit a lot of small issues with conda in checking the hashed outputs of files in nf-core/modules. You can see [all of the modules that we’ve had to ignore conda tests for](https://github.com/nf-core/modules/blob/acb0880789a6ebc2168d3b2d3d42b5bce6a62431/.github/workflows/test.yml#L182-L361)(Some of those just aren’t available on Conda though). It’s not particularly one issue, it’s just a bunch of small death by a thousand paper cuts issues.

It’s a supported feature, and I’ve used it many times myself. Usually for these [quick containers now I just use wave with the conda packages](https://nextflow.io/docs/latest/wave.html#build-conda-based-containers).

I’d be interested the exact differences in the container sizes compared to conda. You might also not be considering the [layers of containers](https://docs.docker.com/build/guide/layers/).

---

<div class="post-metadata">

**Author:** ![arriyaz](https://dub1.discourse-cdn.com/flex013/user_avatar/community.seqera.io/arriyaz/32/666_2.png) [@arriyaz](https://community.seqera.io/u/arriyaz)\
**Post date:** [April 26, 2024, 7:55pm UTC](https://community.seqera.io/t/why-docker-singulariy-over-conda/700/3 "2024-04-26T19:55:17Z")

</div>

> [@arriyaz](#):
>
> think I am missing something.

Thank you very much for your explanations. I got it now.

---

<div class="post-metadata">

**Author:** ![mahesh.binzerpanchal](https://dub1.discourse-cdn.com/flex013/user_avatar/community.seqera.io/mahesh.binzerpanchal/32/253_2.png) [@mahesh.binzerpanchal](https://community.seqera.io/u/mahesh.binzerpanchal)\
**Post date:** [April 29, 2024, 12:56pm UTC](https://community.seqera.io/t/why-docker-singulariy-over-conda/700/4 "2024-04-29T12:56:43Z")

</div>

There’s also the reproducibility factor. Conda environments are not locked (versions of dependencies can and do change over time) and packages can change. This is not true for container images which are fixed snapshots. To change the environment, you need to reference a new image.
