From 0c20789ec67f66dc0919ba22f835135e3efea050 Mon Sep 17 00:00:00 2001 From: sshipway Date: Sun, 13 Mar 2016 23:47:26 +0000 Subject: [PATCH 1/2] Updated Janitor with KEEP_CONTAINERS and wildcard matches Default setting to keep ALL containers protects Rancher templates where run-once containers are used; in general Rancher will remove its own containers where necessary. User of Shell Wildcards allows more flexibility when specifying images to be kept during the sweep. --- templates/janitor/1/docker-compose.yml | 16 +++++++++++++ templates/janitor/1/rancher-compose.yml | 31 +++++++++++++++++++++++++ templates/janitor/config.yml | 2 +- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 templates/janitor/1/docker-compose.yml create mode 100644 templates/janitor/1/rancher-compose.yml diff --git a/templates/janitor/1/docker-compose.yml b/templates/janitor/1/docker-compose.yml new file mode 100644 index 0000000..628de7b --- /dev/null +++ b/templates/janitor/1/docker-compose.yml @@ -0,0 +1,16 @@ +cleanup: + image: sshipway/docker-cleanup:1.5.2 + environment: + CLEAN_PERIOD: ${FREQUENCY} + DELAY_TIME: "900" + KEEP_IMAGES: "${KEEP}" + KEEP_CONTAINERS: "${KEEPC}" + labels: + io.rancher.scheduler.global: "true" + io.rancher.scheduler.affinity:host_label_ne: "${EXCLUDE_LABEL}" + privileged: true + tty: false + stdin_open: false + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /var/lib/docker:/var/lib/docker diff --git a/templates/janitor/1/rancher-compose.yml b/templates/janitor/1/rancher-compose.yml new file mode 100644 index 0000000..901b842 --- /dev/null +++ b/templates/janitor/1/rancher-compose.yml @@ -0,0 +1,31 @@ +.catalog: + name: "Janitor" + version: "v1.5.2" + description: "Docker cleanup" + uuid: janitor-1 + questions: + - variable: "FREQUENCY" + label: "Frequency" + description: "Run the cleanup on a cycle of this many seconds" + default: 3600 + required: true + type: "int" + - variable: "EXCLUDE_LABEL" + label: "Exclude label" + description: "Specify a Rancher host label here that will be used to determine on which hosts the Janitor container should not deploy." + default: janitor.exclude=true + required: true + type: "string" + - variable: "KEEP" + label: "Keep images" + description: "A comma separated list of images that should never be removed. These are left-anchored Bash Shell Wildcard patterns." + default: "rancher/" + required: false + type: "string" + - variable: "KEEPC" + label: "Keep containers" + description: "A comma separated list of images that should never have stopped containers removed. These are left-anchored Bash Shell Wildcard patterns." + default: "*:*" + required: false + type: "string" + diff --git a/templates/janitor/config.yml b/templates/janitor/config.yml index aa8322e..75a4e26 100644 --- a/templates/janitor/config.yml +++ b/templates/janitor/config.yml @@ -1,7 +1,7 @@ name: Janitor description: | Automatic cleanup of unused images on hosts, in order to save disk space. -version: v1.4.0 +version: v1.5.2 category: monitoring maintainer: Steve Shipway From 4e88b991aea2e976514c5617f173004348f4fab0 Mon Sep 17 00:00:00 2001 From: sshipway Date: Sun, 13 Mar 2016 23:55:20 +0000 Subject: [PATCH 2/2] Add documentation for Janitor --- templates/janitor/README.md | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/templates/janitor/README.md b/templates/janitor/README.md index fdfb873..08f78f3 100644 --- a/templates/janitor/README.md +++ b/templates/janitor/README.md @@ -10,8 +10,39 @@ scheduling rule (default is `janitor.exclude=true`). This will run a task daily (by default) that will delete any unused image, and any orphaned volume. The rancher container images are excluded from the list of images to clean up, and you can add your own containers to -the exclude list if you wish. +the exclude list if you wish. It will also remove any stopped containers +that are taking up space. This will halp to prevent the /var/lib/docker filesystem from filling up with old and unused container images. +### Keep list + +You can specify match patterns for unused Images, and stopped Containers, +which should be excluded from the cleanup. + +The match patterns are comma-separated Left Anchored Bash Shell wildcard +patterns. For example, an image called **foo/bar:latest** will match: + +* foo/ +* foo/bar +* \*:latest +* \*/bar +* \*:\* +* fo + +However it will notmatch + +* foo/baz +* bar:latest +* foo/\*:v1 + +By default, nothing will be matched. If you want to match everything, +then use a pattern **\*:\*** + +### Warning + +If you are using 'run-once' sidekick containers that mount a volume, then +these containers may be removed by Janitor! Ensure that the list of +Containers to keep matches these containers -- setting it to +'\*:\*' will keep all containers, which is in general the best solution.