Finally, you are so much in love with Docker that you want to move your online business-critical production systems with sensitive customer data to a Docker Swarm. Some might even already have done so. The other organization can't afford it by a policy forbidding production processes running in root mode.
What could be a checklist of building blocks to consider for a Docker production environment? One does not need all of them, but all of them should be important to be assessed.
Disclaimer: I know there is a SE policy to avoid "large endless lists" but I think this checklist cannot be very big... and endless noway.
So - what are these buildings blocks?
- If not already deployed, consider running a Linux host system with advanced security settings - hardened kernel, SELinux etc.
- Consider using a tiny Docker base image, like alpine, busybox or even scratch e.g. start with an empty base image
- Use USER setting other than root
- Carefully assess to further reduce the already shrinked set of kernel capabilities granted to container
- Consider having only one executable binary per container to launch your process, ideally statically linked
- Those who want to break your system to get a shell access might wonder if they found out your container has all shells disabled
- Mount read-only volumes where only possible
Question: what else?