Skip to content

Base Images

Docker images consist of layers. To save internal HCC2 storage it is advised to use common base images where possible to allow common layers to be shared. There are other considerations for using the recommended images too, such as the C compiler (libc implementation) they use. Alpine base images are not recommended unless the developer is certain their binary is compatible with the musl libc implementation. Google’s distroless images are ideal and lightweight Debian 10/11/12 such as buster-slim are acceptable.

Sensia has provided a registry of verified images for use with specific HCC2 releases, below. Images which have 'build' in their name without including 'prod' are intended only for build purposes in the build stage of a Docker image. They include a number of build tools which expose additional unmitigated security vulnerabilities. They should never be used as the base layer for application images in a production device.

c# (.net 6) containers

Image Reference Container Path
Production/Base qratehcc2sdk.azurecr.io/dotnet-runtime:6.0-2023-03-02-patched-proddebug
Debug qratehcc2sdk.azurecr.io/dotnet-runtime:6.0-2023-03-02-patched-proddebug
Build qratehcc2sdk.azurecr.io/dotnet-sdk:6.0-2023-03-02-build

python containers

Image Reference Container Path
Production/Base qratehcc2sdk.azurecr.io/static-debian12:262ae336-distroless-py-2024-04-27-prod
Debug qratehcc2sdk.azurecr.io/python:3.12-slim-2024-04-19-debugbuild
Build qratehcc2sdk.azurecr.io/python:3.12-slim-2024-04-19-debugbuild

Google Distroless Images

Distroless images from Google are an ideal candidate for generating a release quality Docker container image for any chosen language. E.g. the static-debian12:262ae336-distroless-py-2024-04-27-prod above could be used to host other solutions.

Benefits

  • They do not have a built-in shell which makes them more secure.
  • They only contain basic run-times needed for your application to run.
  • Image size is only about 22MB.
  • Images available for C++, Python, Java, and Node.js
  • Debug version of image available with shell

For HCC2 containerized applications, a Debian 10 (buster) or newer Distroless image is recommended. Reference – GitHub – GoogleContainerTools/distroless: Language focused Docker images, minus the operating system

Disadvantages

There is no package installer (apt). It is assumed that you are bundling an application that is not tightly coupled to services/packages on the OS.
Without a shell, the entrypoint cannot be a script. This can be limiting in situations where startup is complex or 3rd party binaries are involved.

Other Alternatives

debian:buster-slim

Image Reference Container Path
Image qratehcc2sdk.azurecr.io/debian:buster-slim-2024-04-19-debugprodbuild

Alpine

It’s small, but has a shell (unnecessary in production) and uses musl instead of glibc which means the language and any libraries used by the developer need to be fully compatible with this libc interface to the OS.