Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Container naming scheme #1

Open
andriish opened this issue Oct 27, 2021 · 6 comments
Open

Container naming scheme #1

andriish opened this issue Oct 27, 2021 · 6 comments

Comments

@andriish
Copy link
Collaborator

andriish commented Oct 27, 2021

Hi @skluth , (c.c. @oschulz ),

that would make sense to have a proper container naming scheme, similar to LGC architecture tags.
I would suggest
MPP-$OS-$architecture-$purpose-$version.
Where

  • MPP is just a string
  • $OS is the canonical OS name as it appears in the Docker, i.e. centos8 and not CentOS_8
  • $architecture is the architdture tag, i.e. x86_64
  • $purpose could be a name for the software set, i.e. the proper name of the container. "root-6.24-clang"
  • $version should stand for the version of the container. I would suggest it to be in a format "date.small integer"

Best regards,

Andrii

@skluth
Copy link
Contributor

skluth commented Oct 27, 2021

Fine by me ... only the $OS part perhaps needs some evaluation:

  • for ubuntu OS name is "focal" etc on docker, i.e. the release code name
  • for centos 8 stream the OS name is "stream8" on quay.io, and "cs8-base" on docker from CERN, and "8-stream" from centos via yum.

Should we use these names directly, which could be confusing for users, or put more generic "ubuntu20.04, centos8stream or cerncentos8stream or similar? OTOH, using the OS names makes more clear the actual origin of the container; but that becomes clear anyway by a brief look at the def file.

@skluth
Copy link
Contributor

skluth commented Oct 27, 2021

I forgot, at the moment we have an indication in the name if the container was made from sources (yum or debootstrap). We should probably keep that, or we have to find another way to resolve otherwise identical containers.

And the architecture tag is amd64 on docker or quay, not x86_64. Should we use that, or use a LCG style tag? I think our users don't know much about LCG anyway, so we should not cause confusion and stay with the actual architecure tags used on the container repos.

@oschulz
Copy link
Collaborator

oschulz commented Oct 27, 2021

Since we're using mppmu as the org name on dockerhub and GitHub (mpp was taken in both cases), we should use "mppmu", not "MPP". Also, at least in the Docker world, dashes are a common separator in image names, while organisation and tag are separated by "/" and ":", so I would separate org and version with underscores. I would also put "$purpose" first, it makes more sense to have images together by topic when sorting image file names. Operating system info should be optional, I expect that only a few images will actually be maintained in different OS flavors.

So I propose

mppmu_$purpose-[$os-]$architecture_$version

which would mirror Docker image names

mppmu/$purpose-[$os-]$architecture:version # DockerHub
ghcr.io/mppmu/$purpose-[$os-]$architecture:version # GitHub

Of course not all our Singularity images will have a Docker equivalent, but some of them will, so a compatible naming scheme is very beneficial.

@andriish
Copy link
Collaborator Author

Just what the official docker images have.
The release names are just alias
https://hub.docker.com/_/ubuntu
https://hub.docker.com/_/centos

quay.io: https://quay.io/repository/centos/centos?tab=tags -- names and alias overlap with docker

Stream: stream is not used anywhere in those containers and is not in HepRPMS

The official centos architecture name is x86_64

@skluth
Copy link
Contributor

skluth commented Oct 27, 2021

ok, so for ubuntu variants we can use e.g. ubuntu20.04.

older Centos: releases are centos7, or cc7 if from CERN, similar for even earlier ones.

Centos 8: Centos wiki they still don't have an official name for 8 ... and here one finds "CentOS Linux 8 will cease maintenance on December 31, 2021"; thus I focused on stream-8 containers. HEPrpms works just fine, since the difference between current RHEL 8.n point release and 8-stream is just the updated packages for the upcoming 8.n+1 point release (Might be a good idea to enable centos8 stream as a build target on COPR).

We can of course place centos8 point release containers here, based on available docker images, but the latest will very likely be 8.4.2105.

Yes, I noticed x86_64 is used in the distro, but later on docker it becomes amd64. What I want is to reduce confusion for users. IMHO users looked around docker if they are interested in containers, so they saw the amd64 tag. Few users look inside distros ...

@andriish
Copy link
Collaborator Author

Hi @skluth ,

still don't have an official name

the names are the names of docker tags, i.e. from https://hub.docker.com/_/centos

Supported tags and respective Dockerfile links

    latest, centos8, 8, centos8.4.2105, 8.4.2105

centos8 == centos8, nobody is interested in ubunty-like names with "some irrelevant adjective + exotic animal"

amd64

can be so as well, but it should be consistent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants