docker
docker copied to clipboard
Naming Conventions
We need to formalize naming conventions for these docker images. Currently the naming convention is:
rosindustrial/
- How do we handle versions of layers (for example, VTK 7.1 and 8.0)?
- How do we make the names short and easy to use while still being descriptive?
How do we handle versions of layers (for example, VTK 7.1 and 8.0)?
I am proposing we add the versions of additional layers to the version portion of the tag. For example,
- Nvidia base image 8.0: -- rosindustrial/ros-core-nvidia:kinetic-8.0
- VTK 7.1 built on the nvidia image above: -- rosindustrial/core-vtk-nvidia:kinetic-7.1
- PCL 1.8 built on the VTK image above: -- rosindustrial/noether-nvidia:kinetic-1.8 -- if older versions are needed (such as vtk 7.1 or nvidia 8.0) this could become rosindustrial/noether-nvidia:kinetic-1.8-7.1-8.0
I think we should also require the intended tag to be a LABEL in the docker file. In the PCL example above, this would add the line:
rosindustrial/noether-nvidia:kinetic-1.8
We should also support a latest tag.
I am trying to balance usability with descriptive tags. Previous tags, such as rosindustrial/noether, shall be deprecated but not chagned. Lastly, i am considering putting together a formal markdown document for these naming conventions. If agreed upon, this issue will be closed. We can keep the document with the repo, perhaps the readme?
rosindustrial/noether-nvidia:kinetic-1.8-7.1-8.0
This looks complicated.. How many combinations do you want to support?
It is complicated and i am not happy with it. Do you have any suggestions?
I would like to keep it as simple as possible and still be able to differential different versions of each layer. It should be noted that there will always be rosindustrial/noether-nvidia:latest and rosindustrial/noether-nvidia:kinetic if you don't care about configuration management.
It is complicated and i am not happy with it. Do you have any suggestions?
Not really :-/
With rosindustrial/noether-nvidia:kinetic-1.8-7.1-8.0 the numbers are ambiguous, other options:
rosindustrial/noether-nvidia:kinetic-pcl1.8-vtk7.1-nvidia8.0rosindustrial/noether-nvidia8.0:kinetic-pcl1.8-vtk7.1
This is even longer, but more explicit. It's easy to get which number the user has to change.
ok, i am going to incorporate this feedback into the readme. The summary is:
- 'latest': every ros industrial docker image will have a "latest" tag. for example
rosindustrial/noether-nvidia:latestwhich can also be refereed to asrosindustrial/noether-nvidia. this image will have the latest release of all layers. in this case it would be lunar with the latest pcl and vtk. - 'ros-distro': every ros industrial docker image will have a ros-distro related tag such as 'kinetic'. this image will have the latest of all layers based on the kinetic release.
- 'strict configuration management': if you're application needs specific layers, then we will use the naming convention
rosindustrial/noether-nvidia:kinetic-pcl1.8-vtk7.1-nvidia8.0 - we will require the LABEL tag "image name"