Multi-machine hosts: do one machine at a time. Hold lists, driver branch and
kernel flavour differ per machine, so read every output on the machine you are
on.
1. Check for rentals and unlist
List every container, including stopped ones:C. are client instances. Exited still counts as a
rental: the client keeps the disk and can restart it.
Then confirm in the console. Open the machine’s card in the
Vast.ai console; Occ, #Running
and #Stored must all read 0:
C. lines and all three at 0 means the machine is free. Unlist it so nobody
rents it while Docker or the GPUs are down, then continue at step 2:
vastai unlist machine.
2. Check what needs upgrading
Nothing changes on the machine in this step.-o option makes apt ignore the pin for this one command so you can see the
real newest version:
Candidate equals Installed for both, step 5 has nothing to do.
List every other package with an update:
qemu/libvirt without VMs, no nvidia-docker2) is fine.
If A
docker-ce is missing from the list, check the source:docker.io line means Ubuntu’s Docker. Skip step 5; step 6 upgrades it with
everything else.3. Stop the Vast daemon
The daemon re-applies itsapt-mark holds every hour, and a plain stop is not
enough because it restarts itself. Stop it, then mask it so it stays down until
step 8. The unit is a real file, so it has to be backed up and removed before
mask will work:
Loaded: masked and Active: inactive (dead). The machine shows Offline in the
console until step 8; it is unlisted, so that is fine.
4. Remove the holds, keep the kernel
Remove every hold from step 2 at once:E: No packages found means nothing was held; go back to
step 2.
Hold the kernel so this page never installs one. The metapackage is
linux-generic on some machines and linux-generic-hwe-24.04 on others, so let
dpkg pick the installed names:
-hwe-24.04 suffix. Step 8 releases this hold.
5. Upgrade Docker and containerd
Upgrade both, ignoring the pin for this one command:y. --only-upgrade skips packages that are not installed. Docker
restarts on the Setting up docker-ce line.
active before you continue.
Candidate from step 2.
6. Upgrade everything else
Check how the NVIDIA kernel module is delivered on this machine:linux-modules-nvidia-* means prebuilt: nothing is compiled. nvidia-dkms-*
means the module is compiled during the upgrade, which takes several minutes.
Remember which one you have for the recovery section.
Upgrade. NEEDRESTART_MODE=l lists services needing a restart instead of
restarting them:
y. kept back must name the kernel packages from step 4 (Ubuntu may
add a phased-update package; that is fine). Wait for the prompt to return.
7. Reboot
8. Verify, start the daemon and relist
The daemon is still masked. Check Docker and the GPUs first and start the daemon only when they are healthy.Services
active.
GPUs
Docker configuration
The upgrade must not have touched/etc/docker/daemon.json:
runtimes.nvidia.path must still point at kaalia_docker_shim. Do not run
nvidia-ctk runtime configure on a Vast machine: it replaces that path with
NVIDIA’s default runtime and client instances stop working. If the file differs
from the above, restore it to this content and sudo systemctl restart docker.
Images and containers
Confirm the upgrade did not hide the image store:Start the Vast daemon
active most of the time, so read the
uptime:
ago must grow and Main PID must not change.
The console shows Online within about 5 minutes.
If Loaded: says masked, redo the start commands above. If the daemon keeps
restarting or the console stays Offline after 5 minutes, follow the
Offline Machine page from its step 2.
Self-test
Test completed successfully.. On failure the output
names the failing check; see How to self-test.
Re-lock
The daemon puts its holds back within the hour. Run its script now so the machine is never relisted unprotected:set on hold lines and Data sent successfully.; the rest is
diagnostics.
Release the kernel hold from step 4 so the machine keeps getting kernel updates:
apt-cache policy docker-ce now shows a 28.x Candidate below your installed
29.x. That is the daemon’s pin at Pin-Priority: 999; apt only downgrades above
1000, so 29.x stays.Relist
Relist from the Machines page or with your usualvastai list machine command. After 2 to 3
minutes:
New Docker, containerd and driver; every GPU visible on the host and in a
container; daemon running; self-test passed; daemon holds back; kernel hold
released; machine listed. A flag set before the upgrade can take a couple of hourly checks to
clear.