5. Managing Containers

A container is a standard unit of software that packages up everything needed to run an application: code, runtime, system tools, system libraries and settings. This allow applications to run reliably when moved from one computing environment to another.

Container engines, such as Docker, operate at the Operating System level, so they can be run inside a VM.

5.1. Running docker containers in the Cloud

For information about Docker and how to install it, please look at the Docker Documentation.

We report here only about a couple of possible issues that need to be properly addressed.

The first one concerns networking. Docker by default sets the MTU to 1500, but the MTU for CloudVeneto virtual machines is 1458 (reduced by the overhead added by some networking components). Thus it is needed to reduce the Docker MTU to say 1450. To implement this, when a new instance is created, the file /etc/docker/daemon.json is automatically created with this content:

{
  "mtu": 1450
}

The second issue concerns the file system: there could be problems running docker on old CentOS 7 releases where xfs is used as file system, as reported here. Newest CentOS 7 releases are not affected by this issue.

If, for some reasons, you can’t use a newer version of CentOS 7 not affected by this problem, the instructions reported here might help.

5.2. Orchestrating containers

If you need to orchestrate multiple containers, we suggest to use Kubernetes (K8S), which is the most popular container orchestrator.