This documentation is for an older version of the software. If you are using the current version of Cumulus Linux, this content may not be up to date. The current version of the documentation is available here. If you are redirected to the main page of the user guide, then this page may have been renamed; please search for it there.

Docker on Cumulus Linux

Cumulus Linux can be used to run the Docker container platform. You can install Docker Engine directly on a Cumulus Linux switch and run Docker containers natively on the switch.

To set up Docker on Cumulus Linux, run the following commands as root.

  1. Install the authentication key for Docker:
root@switch:~# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
  1. Configure the repositories for Docker:
root@switch:~# echo "deb [arch=amd64] https://download.docker.com/linux/debian buster stable" >/etc/apt/sources.list.d/docker.list
  1. Install the Docker package:
root@switch:~# apt update
root@switch:~# apt install -y docker-ce
  1. Configure Docker to minimize impact on the system’s firewall and forwarding configuration:
root@switch:~# cat >/etc/docker/daemon.json <<EOD
{
	"iptables": false,
	"ip-forward": false,
	"ip-masq": false
}
EOD
  1. Configure Docker to run in the management VRF:
root@switch:~# cp /lib/systemd/system/docker.service /lib/systemd/system/docker@.service
root@switch:~# sed -i -re '
        /^Requires=docker.socket$/ d;
        /^ExecStart\>/ s/-H fd:\/\/ //
' /lib/systemd/system/docker@.service

root@switch:~# echo "docker" >>/etc/vrf/systemd.conf

root@switch:~# systemctl daemon-reload
root@switch:~# systemctl mask docker.socket
root@switch:~# systemctl disable --now docker.service
root@switch:~# systemctl enable --now docker@mgmt
  1. Test your installation by running the hello-world container:
root@switch:~# docker run hello-world

Be mindful of the types of applications you want to run in containers on a Cumulus Linux switch. Depending on the configuration of the container, DHCP servers, custom scripts, and other lightweight services run well. However, VPN, NAT and encryption-type services are CPU-intensive and might lead to undesirable effects on critical applications. Resource-intensive services are not supported.