Illumina Innovates with Rancher and Kubernetes
On boot, RancherOS scans /var/lib/rancher/preload/docker and /var/lib/rancher/preload/system-docker directories and tries to load container image archives it finds there, with docker load and system-docker load.
/var/lib/rancher/preload/docker
/var/lib/rancher/preload/system-docker
docker load
system-docker load
The archives are .tar files, optionally compressed with xz or gzip. These can be produced by docker save command, e.g.:
.tar
xz
gzip
docker save
$ docker save my-image1 my-image2 some-other/image3 | xz > my-images.tar.xz
The resulting files should be placed into /var/lib/rancher/preload/docker or /var/lib/rancher/preload/system-docker (depending on whether you want it preloaded into Docker or System Docker).
Pre-loading process only reads each new archive once, so it won’t take time on subsequent boots (<archive>.done files are created to mark the read archives). If you update the archive (place a newer archive with the same name) it’ll get read on the next boot as well.
<archive>.done
Pre-loading process is asynchronous by default, optionally this can be set to synchronous through the cloud-config file or ros config set command. In the following example, we’ll use the cloud-config file and ros config set command to set RancherOS pre-loading process to synchronous.
asynchronous
synchronous
ros config set
Available as of v1.4
cloud-config file, e.g.:
#cloud-config rancher: preload_wait: true
ros config set command, e.g.:
$ ros config set rancher.preload_wait true
Pre-packing docker images is handy when you’re customizing your RancherOS distribution (perhaps, building cloud VM images for your infrastructure).