Photon OS is an open-source minimalist Linux operating system from VMware, highly optimized for container workloads.

Crazy fast

How optimized is it, you ask? The minimal image weighs in at a tiny 470MiB, installs in 20 seconds, uses less than 1GiB of disk space after install, boots in 10 seconds (including the GRUB wait time!), and consumes less than 150MiB RAM after boot. It cannot get better than that (maybe VMware surprises me in the next release!).

Resource Consumption after boot

What do you get?

With photon OS minimal, you get the docker runtime and the bare minimum tools, which means that you can install this and start bringing up containers and docker-compose services. No extra tooling is required. This is amazing in and of itself, but the full version includes Kubernetes and a bunch of other packages too.

Why minimal?

I use the minimal version because has less packages preinstalled so that I can install exactly what I need after it is up. If I need Kubernetes, I mostly install k3s using k3sup which I detailed while creating a cluster on Windows.

Installation

You can find the official documentation on VMware’s site . The installation is a very simple 3 step process:

  • Set the disk to install on
  • Configure networking
  • Provide a root password to login later.

That is it. After a rapid installation and reboot, you will land on the login prompt ready to be used.

Bare minimum configuration

This is what I typically do once I install Photon OS. First is to disable iptables which ships by default set to block all traffic other than SSH. When you run workloads, pretty sure you will need to expose ports to the network, and when run for development use, there can be a lot of those. So, off it goes. To disable it, run the below command, which stops and disables iptables from starting on boot. Remember to turn this back on and configure it correctly for production.

1
systemctl disable --now iptables

Next comes SSH. By default, there is only a root user, and the sshd config prevents root user login with or without the password. So, follow the steps below to enable that.

1
2
sed -i 's/^\(PermitRootLogin \).*/\1yes/' /etc/ssh/sshd_config
systemctl restart sshd

Once this is done, you might want to set up passwordless login for the root user. For example, to use k3sup to set up Kubernetes. Do that by running the below command from the host where you would like to SSH from.

1
ssh-copy-id [email protected]<PhotonOS-IP>

If docker is more your cup of tea, docker-daemon is preinstalled as well! Run the below command to enable the service to start on boot.

1
systemctl enable --now docker

Remember that you can do all the above with a cloud-init file, but it was not worth the effort for me unless used along with Terraform/Packer. If you would like that, here is more information on it .

What can this be used for?

Other than the fact that this was designed for the cloud, but also runs in any hypervisor imaginable (including Microsoft’s Hyper-V, given that this comes from VMware) is impressive. Anywhere I need something Linux-based and run containers, I will be thinking of this. I plan on using this to create an excellent alternative to Docker Desktop’s license + subscription model for enterprise use on both Windows and macOS.

My next steps also include migrating the services I host in my home lab from docker-compose to Kubernetes and getting more hands-on experience for CKAD certification, which means the next K3s cluster I build will most certainly be using Photon OS. Stay tuned for more posts on those endeavors!