Docker on Debian ================ Please refer to upstream's documentation for information about what Docker is, how it works, and how to use it: https://docs.docker.com/ The following notes are things that may have impact specifically to use of the Docker package in Debian. --- To enable docker memory limitation, the kernel needs to be loaded with boot parameters: cgroup_enable=memory swapaccount=1. This is because enabling memory cgroup support has some run-time overhead, and kernel maintainers don't want to slow down systems unnecessarily. http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg764104.html https://github.com/docker/docker/issues/396 To instruct the kernel to enable memory cgroup support, edit /etc/default/grub and extend GRUB_CMDLINE_LINUX_DEFAULT like: GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1" Then run update-grub, and reboot. --- It's worth pointing out that upstream maintains a "check-config.sh" script for verifying not only proper kernel configuration (which isn't terribly relevant in the Debian context), but also the host system configuration, especially and including whether a properly mounted cgroup hierarchy can be found. If you're using cgroupfs-mount or systemd, chances are very high that you have one, but if not, you're likely to see strange behavior. In the docker.io package, one can find the "check-config.sh" script under "/usr/share/docker.io/contrib/check-config.sh", which when run (does NOT require root/sudo) will report on problems with your installation/configuration. --- As noted in the upstream documentation (https://docs.docker.io), Docker will allow non-root users in the "docker" group to access "docker.sock" and thus communicate with the daemon. To add yourself to the "docker" group, use something like: adduser YOURUSER docker As also noted in the upstream documentation, the "docker" group (and any other means of accessing the Docker API) is root-equivalent. If you don't trust a user with root on your box, you shouldn't trust them with Docker either. If you are interested in further information about the security aspects of Docker, please be sure to read the "Docker Security" article in the upstream documentation: https://docs.docker.com/engine/security/security/ --- rpc error: code = 2 desc = "oci runtime error: could not synchronise with container process: no subsystem for mount" This message is very likely related to https://bugs.debian.org/843530, and thus https://github.com/opencontainers/runc/issues/1175. Adding "systemd.legacy_systemd_cgroup_controller=yes" to your system boot parameters (in Grub, etc) is probably necessary to resolve it. --- ## Restart dilemma Restarting Docker daemon terminates all running containers. Therefore automatic restart is not an option as containers may be killed during unattended upgrade, etc. This is Docker's design flaw and upstream gave up on idea of restoring state of running containers on upgrade, bluntly stating "You must stop all containers and plugins BEFORE upgrading" in release notes. ** "rkt" container runtime is free from that flaw. ** Not restarting Docker daemon on upgrade can make CLI unusable until daemon restart due to mismatch between CLI and running Daemon versions. Fortunately recommended "needrestart" package show interactive prompt to restart Docker daemon after upgrade.