This article introduces Docker's key concepts and explains how it is utilized at Qarnot. It also outlines which profiles and constants can be configured to run a Docker image within a task.
At Qarnot, we leverage Docker to run tasks efficiently on our distributed infrastructure, enabling seamless scalability and deployment of custom software.
A container is a self-contained, lightweight, and executable package that includes everything required to run a piece of software—code, runtime, system tools, libraries, and settings. Containers ensure consistency and efficiency across different environments.
Containers have the following characteristics
Containers are now the standard for packaging applications in modern IT and cloud environments. At Qarnot, we rely on Docker, one of the most popular containerization platforms. To dive deeper into Docker, visit the Docker Documentation.
Docker is the primary technology Qarnot uses to run computations on its platform. When you execute a task on Qarnot, it consists of three main components:
There are several options for sourcing Docker images for use on Qarnot:
This section covers Docker profiles, which are necessary for using Docker containers on Qarnot. These profiles define how Docker interacts with Qarnot’s infrastructure, including network access, hardware, and cluster settings. If you want to learn how to use Docker images in your tasks, refer to our guide.
To use Docker in your tasks, choose a Docker-enabled profile. Below is a list of profiles and their descriptions:
docker-batch: For non-networked tasks that run on a single node.docker-cluster: Enables tasks to run in a cluster of nodes without network access.docker-cluster-network: Clustered tasks with network capabilities.docker-cluster-network-ssh: Cluster tasks with both network and SSH access.docker-cluster-roce: Clustered tasks with high-performance network (RDMA over Converged Ethernet).docker-cluster-roce-network-ssh: Combines RDMA, network, and SSH access for clustered tasks.docker-network: For tasks that require network access.docker-network-ssh: Allows SSH access in addition to network capabilities.docker-nvidia-batch: Optimized for tasks running on NVIDIA GPUs without network access.docker-nvidia-network: Optimized for NVIDIA GPU tasks that require network access.When using Docker profiles on Qarnot, several constants must be configured to define the behavior of your task:
DOCKER_SRV: Docker registry to use. Change if using a custom registry.DOCKER_REPO: Docker image repository. E.g., library/ubuntu.DOCKER_TAG: Docker image tag. E.g., latest, trusty, etc.DOCKER_REGISTRY_LOGIN: Docker Hub login for private images.DOCKER_REGISTRY_PASSWORD: Docker Hub password for private images. Use the secret to hide sensitive data.QARNOT_SECRET_DOCKER_REGISTRY_PASSWORD: Password for private Docker Hub images, hidden for security. using a “QARNOT_SECRET_” constant, these are read only, constant readable only by your task.If you’re using a cluster profile (e.g., docker-cluster-xyz), the following constants are also important:
If your profile includes SSH access (e.g., docker-network-ssh), you’ll need to configure SSH keys:
For further information on using Docker on Qarnot, please refer to our detailed guides.
To start using docker images on Qarnot please read the following guides