From 03c9c091f2fd54b12128ac380a78031aa9b98203 Mon Sep 17 00:00:00 2001
From: Barry Melbourne <9964974+bmelbourne@users.noreply.github.com>
Date: Mon, 31 Aug 2020 12:56:20 +0100
Subject: [PATCH] Docker: Set Cgroup driver by default to systemd (#6563)

* Set Docker Cgroup driver to systemd

* Add docker_cgroup_driver in Docker defaults
---
 inventory/sample/group_vars/all/docker.yml                    | 4 ++++
 roles/container-engine/docker/defaults/main.yml               | 2 ++
 .../container-engine/docker/templates/docker-options.conf.j2  | 4 ++--
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/inventory/sample/group_vars/all/docker.yml b/inventory/sample/group_vars/all/docker.yml
index f05438967..0cad8df38 100644
--- a/inventory/sample/group_vars/all/docker.yml
+++ b/inventory/sample/group_vars/all/docker.yml
@@ -10,6 +10,10 @@ docker_container_storage_setup: false
 ## Otherwise docker-storage-setup will be executed incorrectly.
 # docker_container_storage_setup_devs: /dev/vdb
 
+## Uncomment this if you want to change the Docker Cgroup driver (native.cgroupdriver)
+## Valid options are systemd or cgroupfs, default is systemd
+# docker_cgroup_driver: systemd
+
 ## Uncomment this if you have more than 3 nameservers, then we'll only use the first 3.
 docker_dns_servers_strict: false
 
diff --git a/roles/container-engine/docker/defaults/main.yml b/roles/container-engine/docker/defaults/main.yml
index ced8777af..f37608889 100644
--- a/roles/container-engine/docker/defaults/main.yml
+++ b/roles/container-engine/docker/defaults/main.yml
@@ -18,6 +18,8 @@ dockerproject_repo_key_info:
 dockerproject_repo_info:
   repos:
 
+docker_cgroup_driver: systemd
+
 docker_dns_servers_strict: true
 
 docker_container_storage_setup: false
diff --git a/roles/container-engine/docker/templates/docker-options.conf.j2 b/roles/container-engine/docker/templates/docker-options.conf.j2
index 3ce40087c..0dc0ef657 100644
--- a/roles/container-engine/docker/templates/docker-options.conf.j2
+++ b/roles/container-engine/docker/templates/docker-options.conf.j2
@@ -1,12 +1,12 @@
 [Service]
 Environment="DOCKER_OPTS={{ docker_options|default('') }} --iptables={{ docker_iptables_enabled | default('false') }} \
+--exec-opt native.cgroupdriver={{ docker_cgroup_driver }} \
 {% for i in docker_insecure_registries %}--insecure-registry={{ i }} {% endfor %} \
 {% for i in docker_registry_mirrors %}--registry-mirror={{ i }} {% endfor %} \
 {% if docker_version != "latest" and docker_version is version('17.05', '<') %}--graph={% else %}--data-root={% endif %}{{ docker_daemon_graph }} \
 {% if ansible_os_family not in ["openSUSE Leap", "openSUSE Tumbleweed", "Suse"] %}{{ docker_log_opts }}{% endif %} \
 {% if ansible_architecture == "aarch64" and ansible_os_family == "RedHat" %} \
---add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
---default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd \
+--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc \
 --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --signature-verification=false \
 {% endif %}"
 
-- 
GitLab