ReproNim / neurodocker

Generate custom Docker and Singularity images, and minimize existing containers
https://www.repronim.org/neurodocker/
Apache License 2.0
326 stars 97 forks source link

Do not overwrite :latest tag when uploading newer docker image to docker hub (give version tags instead) #489

Closed JohannesWiesner closed 1 year ago

JohannesWiesner commented 1 year ago

Hi! We are currently using neurodocker to develop our own lap-specific docker image. For that we are using

docker run -i --rm repronim/neurodocker:latest generate docker [...]

We noticed that two days ago a new version was uploaded to Docker Hub, also with the :latest tag. Now the Dockerfile generation is crashing. On my machine it works fine because I have the "older" latest version (downloaded 7 weeks ago), but my colleague has the "newer" latest version (downloaded today, he accidentally overwrote his latest version). Would it perhaps be possible to not overwrite the :latest tag, but instead assign specific versions to the newer uploads? That would make troubleshooting much easier for us, and possibly help improve issues with Neurodocker itself. Or have I missed something that allows us to download specific "sub-versions" of the neurodocker image that can uniquely identify a particular version?

Pinging @satra and @kaczmarj here, because I don't know who's behind the repronim account on DockerHub?

kaczmarj commented 1 year ago

hi @JohannesWiesner - could you use a versioned docker image? which version were you using originally? there should be a docker image for it either at my dockerhub account (https://hub.docker.com/r/kaczmarj/neurodocker/tags) or at the repronim account (https://hub.docker.com/r/repronim/neurodocker/tags).

the :latest tag of docker images is a moving target and corresponds to the most recent version. it can change unexpectedly, and this is true for basically all docker images. for example ubuntu:latest will change to different versions of ubuntu as they are released.

satra commented 1 year ago

@JohannesWiesner - there was a PR merged that shouldn't have been. but it shouldn't have also created an image. we will look into that.

@kaczmarj - it would be good to fix some of the issues (mypy and afni empty line) and set up a proper release process. also we should try to consolidate into a common dockerhub repo.

Engrammae commented 1 year ago

Hi, thanks two both of you for your reply! We were confused, because it said that "The Docker images were moved to repronim/neurodocker from kaczmarj/neurodocker." However the last versioned image (0.7.0) on the repronim account is from 3 years ago. Ok, so is it correct to pull (stable) versioned images from kaczmarj's account and not from the repronim account? Does repronim/neurodocker:latest refer to a developing version?

kaczmarj commented 1 year ago

@satra - i agree. a proper release process would benefit the developers and users :)

@Engrammae - i also saw that the versions on repronim/neurodocker are outdated. i will fix this today by uploading the recent neurodocker versions to repronim/neurodocker. they should be built automatically once a new release is cut, but it seems that process has not been working. this github repository used to be under my username, so i put the docker images in my namespace on dockerhub. but after moving neurodocker to repronim's github org, we also sought to move the images to repronim's dockerhub namespace.

we will need to make sure future releases are built and uploaded to dockerhub.

kaczmarj commented 1 year ago

i am having problems uploading to the repronim namespace on dockerhub... will debug and will update here.

kaczmarj commented 1 year ago

i tried updating the autobuild settings on dockerhub to build the master branch and all tags, but the settings are not saving. apparently one needs to be an admin to change those settings. but conveniently the error is silent :) i found this info here https://forums.docker.com/t/save-build-configuration-does-not-take-effect/115496/2

satra commented 1 year ago

@kaczmarj - try now.

kaczmarj commented 1 year ago

@satra - thanks, works now. i also triggered automated builds for releases since 0.5.0. the :latest tag will still track the master branch, though. and i think an automated build should be triggered next time we cut a release. we should make sure it is.

i used a POST command to trigger the builds of previous tags. this should not be necessary for any future releases.

curl -X POST -H "Content-Type: application/json" --data '{"source_type": "Tag", "source_name": "0.9.1"}' $URL

where URL=https://hub.docker.com/api/build/v1/source/XXXXXXXXXXXXX. admins in the repronim dockerhub org can find the url under "Configure Automated Builds".

kaczmarj commented 1 year ago

@satra - what about this setup for docker image tags?

this will be more consistent with images like debian and ubuntu where :latest points to the latest stable release.

satra commented 1 year ago

works for me.

kaczmarj commented 1 year ago

nice it's done.

@JohannesWiesner @Engrammae - here are the images currently available. this info should be added to the online docs to avoid confusion.

repronim/neurodocker:latest -> latest release (0.9.1 now)
repronim/neurodocker:master -> master branch
repronim/neurodocker:0.9.1
repronim/neurodocker:0.9.0
repronim/neurodocker:0.8.0
repronim/neurodocker:0.7.0
...
kaczmarj commented 1 year ago

@JohannesWiesner @Engrammae - i will close this issue as completed