Linux Images
CoreWeave offers a variety of optimized Linux base images, with out-of-the-box support for several popular distributions including Ubuntu Linux, CentOS, and Rocky Linux. These images are distributed as PVCs in the vd-images
namespace.
To locate a desired image, use our metadata labels. For example, to get a list of all the latest public Linux images:
It's a best practice to choose an image in the same region as the Virtual Server deployment.
Tip
Most "Generic Cloud" distribution images are also drop-in compatible with CoreWeave Cloud. See Importing a QCOW2 image for more information.
Flavors
Our Linux images are available in three different flavors:
Docker-only
Docker with NVIDIA drivers
Docker with NVIDIA drivers and Teradici Graphics Agent
Docker-only
All Linux images are pre-installed with the Docker Engine. Docker-only images are not intended to be used with a GPU, and therefore do not have a desktop environment or NVIDIA drivers.
To locate these images, select docker
for the images.coreweave.cloud/features
metadata label.
Docker with NVIDIA
These images include the Docker Engine, the NVIDIA Container Toolkit, and NVIDIA GPU drivers.
The NVIDIA driver version is periodically changed in new image releases, pending validation and dependency matches. These images contain NVIDIA drivers and are intended to be used with a GPU but no desktop environment is installed.
To locate these images, select nvidia_docker
for the images.coreweave.cloud/features
metadata label.
Docker with NVIDIA and Teradici
These images include the Docker Engine, the NVIDIA Container Toolkit, NVIDIA GPU drivers, and the Teradici Graphics Agent.
Out of the box, the graphics agent points to a CoreWeave Licensing Server, where Teradici subscription licenses are billed at an hourly rate. These are intended for use as a Virtual Workstation and come pre-installed with the GNOME Desktop Environment. Linux Virtual Servers deployed with Teradici can be accessed with clients for Windows, macOS, and Linux, and more.
To locate these images, select nvidia_teradici_docker
for the images.coreweave.cloud/features
metadata label.
cloud-init
All Linux images provided by CoreWeave Cloud include cloud-init for instance instantiation.
Cloud-init provides a powerful way to provision an instance programmatically, or pass through generic metadata.
Additional Resources
See more in Cloud-init.
cloud-init Modules
cloud-init has various modules that process different directives from the provided metadata manifest.
Modules are processed based on the configuration file located in /etc/cloud/cloud.cfg
. As default, the following modules are processed:
Note
For more information, see cloud-init's Module Reference.
Modules in cloud.cfg
that do not have a frequency specified follow the default behavior outlined in the Module Reference. CoreWeave images configure select modules to process "always", vs "once-per-instance":
growpart
resizefs
mounts
set_hostname
scripts-user
This ensures, respectively:
Partitions are re-sized after disk expansion
File Systems are re-sized after disk expansion
New Shared File Systems and other mounts are auto added to
fstab
and mountedhostname
updates are respectedUserdata scripts are always processed
Virtual Server cloud-init abstractions
Some properties in a Virtual Server Manifest map to cloud-init properties, and automatically populate those fields:
spec.users[]
spec.users[]
spec.users[]
in a Virtual Server manifest populates cloud-init metadata for the users and groups module.
The resultant metadata generated looks like this:
storage.filesystems[]
storage.filesystems[]
Adding File System mounts to a Virtual Server manifest populates cloud-init metadata for the mounts module.
The resultant metadata generated looks like this:
metadata.name
metadata.name
The name of a Virtual Server is used to set the hostname
, using the cloud-init Update Hostname module.
The resultant metadata generated looks like this:
Additional cloud-init metadata
Outside of the cloud-init abstractions provided in the Virtual Server spec, additional cloud-init metadata can be added to a manifest via spec.cloudInit[]
. Metadata is passed as a multi-line string literal. As an example using the cloud-init Package Update module:
The additional cloud-init metadata will be merged with the abstracted fields from the Virtual Server spec. The resultant, full metadata generated looks like this:
Additional cloud-init metadata examples
Using additional cloud-init metadata provides an easy, repeatable method of configuring an instance at initial deployment. Actions that one may perform manually when deploying a new instance can be automated via cloud-init.
Set system time zone
Update package repositories and packages
Note
This performs apt update && apt upgrade
or yum upgrade
on first boot.
Install packages
Note
Prior to installing packages, the repository database is updated. If no package version is specified, the latest version is installed.
Run arbitrary commands
Note
Commands and arguments can be formatted in any of the ways listed above.
Inject and run a bash
script
bash
scriptPartition, format, and mount a new Block Volume
Full cloud-init Virtual Server manifest example
The Virtual Server manifest below combines all the examples above:
After creating the Virtual Server, output from the cloudInit directives can be found in /var/log/cloud-init-output.log
:
Last updated