Deployed a7a28ec with MkDocs version: 1.1.2

pull/763/head
4 years ago
parent 7b8d536f73
commit 53c402703e

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -11,7 +9,7 @@
<link rel="shortcut icon" href="/watchtower/assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -19,13 +17,17 @@
<link rel="stylesheet" href="/watchtower/assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="/watchtower/assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="/watchtower/assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -40,7 +42,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -127,8 +135,6 @@
<div class="md-container" data-md-component="container">
@ -309,6 +315,18 @@
</li>
<li class="md-nav__item">
<a href="/watchtower/running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -351,15 +369,15 @@
</div>
<script src="/watchtower/assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="/watchtower/assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="/watchtower/assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="/watchtower/assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "/watchtower/",
features: [],
search: Object.assign({
worker: "/watchtower/assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "/watchtower/assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -134,8 +142,6 @@
<div class="md-container" data-md-component="container">
@ -222,9 +228,7 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
Arguments
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 9h14V7H3v2m0 4h14v-2H3v2m0 4h14v-2H3v2m16 0h2v-2h-2v2m0-10v2h2V7h-2m0 6h2v-2h-2v2z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" title="Arguments" class="md-nav__link md-nav__link--active">
@ -237,9 +241,7 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
@ -284,6 +286,13 @@
Trace
</a>
</li>
<li class="md-nav__item">
<a href="#ansi_colors" class="md-nav__link">
ANSI colors
</a>
</li>
<li class="md-nav__item">
@ -395,6 +404,13 @@
HTTP API Token
</a>
</li>
<li class="md-nav__item">
<a href="#filter_by_scope" class="md-nav__link">
Filter by scope
</a>
</li>
<li class="md-nav__item">
@ -402,6 +418,13 @@
Scheduling
</a>
</li>
<li class="md-nav__item">
<a href="#rolling_restart" class="md-nav__link">
Rolling restart
</a>
</li>
<li class="md-nav__item">
@ -521,6 +544,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -537,9 +572,7 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
@ -584,6 +617,13 @@
Trace
</a>
</li>
<li class="md-nav__item">
<a href="#ansi_colors" class="md-nav__link">
ANSI colors
</a>
</li>
<li class="md-nav__item">
@ -695,6 +735,13 @@
HTTP API Token
</a>
</li>
<li class="md-nav__item">
<a href="#filter_by_scope" class="md-nav__link">
Filter by scope
</a>
</li>
<li class="md-nav__item">
@ -702,6 +749,13 @@
Scheduling
</a>
</li>
<li class="md-nav__item">
<a href="#rolling_restart" class="md-nav__link">
Rolling restart
</a>
</li>
<li class="md-nav__item">
@ -735,9 +789,6 @@
</a>
<h1>Arguments</h1>
<p>By default, watchtower will monitor all containers running within the Docker daemon to which it is pointed (in most cases this
@ -812,6 +863,14 @@ Environment Variable: WATCHTOWER_TRACE
Default: false
</code></pre>
<h2 id="ansi_colors">ANSI colors<a class="headerlink" href="#ansi_colors" title="Permanent link">&para;</a></h2>
<p>Disable ANSI color escape codes in log output.</p>
<pre><code> Argument: --no-color
Environment Variable: NO_COLOR
Type: Boolean
Default: false
</code></pre>
<h2 id="docker_host">Docker host<a class="headerlink" href="#docker_host" title="Permanent link">&para;</a></h2>
<p>Docker daemon socket to connect to. Can be pointed at a remote Docker host by specifying a TCP endpoint as "tcp://hostname:port".</p>
<pre><code> Argument: --host, -h
@ -863,7 +922,7 @@ Environment Variable: WATCHTOWER_LABEL_ENABLE
<h2 id="filter_by_disable_label">Filter by disable label<a class="headerlink" href="#filter_by_disable_label" title="Permanent link">&para;</a></h2>
<p><strong>Do not</strong> update containers that have <code>com.centurylinklabs.watchtower.enable</code> label set to false and no <code>--label-enable</code> argument is passed. Note that only one or the other (targeting by enable label) can be used at the same time to target containers.</p>
<h2 id="without_updating_containers">Without updating containers<a class="headerlink" href="#without_updating_containers" title="Permanent link">&para;</a></h2>
<p>Will only monitor for new images, not update the containers. </p>
<p>Will only monitor for new images, send notifications and invoke the <a href="https://containrrr.dev/watchtower/lifecycle-hooks/">pre-check/post-check hooks</a>, but will <strong>not</strong> update the containers.</p>
<blockquote>
<h3 id="please_note">⚠️ Please note<a class="headerlink" href="#please_note" title="Permanent link">&para;</a></h3>
<p>Due to Docker API limitations the latest image will still be pulled from the registry.</p>
@ -874,6 +933,7 @@ Environment Variable: WATCHTOWER_MONITOR_ONLY
Default: false
</code></pre>
<p>Note that monitor-only can also be specified on a per-container basis with the <code>com.centurylinklabs.watchtower.monitor-only</code> label set on those containers.</p>
<h2 id="without_restarting_containers">Without restarting containers<a class="headerlink" href="#without_restarting_containers" title="Permanent link">&para;</a></h2>
<p>Do not restart containers after updating. This option can be useful when the start of the containers
is managed by an external system such as systemd.</p>
@ -895,7 +955,7 @@ Environment Variable: WATCHTOWER_NO_PULL
</code></pre>
<h2 id="without_sending_a_startup_message">Without sending a startup message<a class="headerlink" href="#without_sending_a_startup_message" title="Permanent link">&para;</a></h2>
<p>Do not send a message after watchtower started. Otherwise there will be an info-level notification. </p>
<p>Do not send a message after watchtower started. Otherwise there will be an info-level notification.</p>
<pre><code> Argument: --no-startup-message
Environment Variable: WATCHTOWER_NO_STARTUP_MESSAGE
Type: Boolean
@ -926,8 +986,16 @@ Environment Variable: WATCHTOWER_HTTP_API_TOKEN
Default: -
</code></pre>
<h2 id="filter_by_scope">Filter by scope<a class="headerlink" href="#filter_by_scope" title="Permanent link">&para;</a></h2>
<p>Update containers that have a <code>com.centurylinklabs.watchtower.scope</code> label set with the same value as the given argument. This enables <a href="https://containrrr.github.io/watchtower/running-multiple-instances">running multiple instances</a>.</p>
<pre><code> Argument: --scope
Environment Variable: WATCHTOWER_SCOPE
Type: String
Default: -
</code></pre>
<h2 id="scheduling">Scheduling<a class="headerlink" href="#scheduling" title="Permanent link">&para;</a></h2>
<p><a href="https://pkg.go.dev/github.com/robfig/cron@v1.2.0?tab=doc#hdr-CRON_Expression_Format">Cron expression</a> in 6 fields (rather than the traditional 5) which defines when and how often to check for new images. Either <code>--interval</code> or the schedule expression
<p><a href="https://pkg.go.dev/github.com/robfig/cron@v1.2.0?tab=doc#hdr-CRON_Expression_Format">Cron expression</a> in 6 fields (rather than the traditional 5) which defines when and how often to check for new images. Either <code>--interval</code> or the schedule expression
can be defined, but not both. An example: <code>--schedule "0 0 4 * * *"</code></p>
<pre><code> Argument: --schedule, -s
Environment Variable: WATCHTOWER_SCHEDULE
@ -935,6 +1003,15 @@ Environment Variable: WATCHTOWER_SCHEDULE
Default: -
</code></pre>
<h2 id="rolling_restart">Rolling restart<a class="headerlink" href="#rolling_restart" title="Permanent link">&para;</a></h2>
<p>Restart one image at time instead of stopping and starting all at once. Useful in conjunction with lifecycle hooks
to implement zero-downtime deploy.</p>
<pre><code> Argument: --rolling-restart
Environment Variable: WATCHTOWER_ROLLING_RESTART
Type: Boolean
Default: false
</code></pre>
<h2 id="wait_until_timeout">Wait until timeout<a class="headerlink" href="#wait_until_timeout" title="Permanent link">&para;</a></h2>
<p>Timeout before the container is forcefully stopped. When set, this option will change the default (<code>10s</code>) wait time to the given value. An example: <code>--stop-timeout 30s</code> will set the timeout to 30 seconds.</p>
<pre><code> Argument: --stop-timeout
@ -1016,15 +1093,15 @@ Environment Variable: DOCKER_TLS_VERIFY
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,13 +44,24 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#full_exclude" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
@ -129,8 +142,6 @@
<div class="md-container" data-md-component="container">
@ -239,10 +250,44 @@
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
Container selection
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" title="Container selection" class="md-nav__link md-nav__link--active">
Container selection
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#full_exclude" class="md-nav__link">
Full Exclude
</a>
</li>
<li class="md-nav__item">
<a href="#monitor_only" class="md-nav__link">
Monitor Only
</a>
</li>
</ul>
</nav>
</li>
@ -318,6 +363,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -325,6 +382,41 @@
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#full_exclude" class="md-nav__link">
Full Exclude
</a>
</li>
<li class="md-nav__item">
<a href="#monitor_only" class="md-nav__link">
Monitor Only
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
@ -335,12 +427,15 @@
</a>
<h1>Container selection</h1>
<p>By default, watchtower will watch all containers. However, sometimes only some containers should be updated.</p>
<p>There are two options:</p>
<ul>
<li><strong>Fully exclude</strong>: You can choose to exclude containers entirely from being watched by watchtower.</li>
<li><strong>Monitor only</strong>: In this mode, watchtower checks for container updates, sends notifications and invokes the <a href="https://containrrr.dev/watchtower/lifecycle-hooks/">pre-check/post-check hooks</a> on the containers but does <strong>not</strong> perform the update.</li>
</ul>
<h2 id="full_exclude">Full Exclude<a class="headerlink" href="#full_exclude" title="Permanent link">&para;</a></h2>
<p>If you need to exclude some containers, set the <em>com.centurylinklabs.watchtower.enable</em> label to <code>false</code>.</p>
<pre><code class="docker">LABEL com.centurylinklabs.watchtower.enable=&quot;false&quot;
</code></pre>
@ -349,13 +444,29 @@
<pre><code class="bash">docker run -d --label=com.centurylinklabs.watchtower.enable=false someimage
</code></pre>
<p>If you need to <a href="https://containrrr.github.io/watchtower/arguments/#filter_by_enable_label">include only containers with the enable label</a>, pass the <code>--label-enable</code> flag or the <code>WATCTOWER_LABEL_ENABLE</code> environment variable on startup and set the <em>com.centurylinklabs.watchtower.enable</em> label with a value of <code>true</code> for the containers you want to watch.</p>
<p>If you need to <a href="https://containrrr.github.io/watchtower/arguments/#filter_by_enable_label">include only containers with the enable label</a>, pass the <code>--label-enable</code> flag or the <code>WATCHTOWER_LABEL_ENABLE</code> environment variable on startup and set the <em>com.centurylinklabs.watchtower.enable</em> label with a value of <code>true</code> for the containers you want to watch.</p>
<pre><code class="docker">LABEL com.centurylinklabs.watchtower.enable=&quot;true&quot;
</code></pre>
<p>Or, it can be specified as part of the <code>docker run</code> command line:</p>
<pre><code class="bash">docker run -d --label=com.centurylinklabs.watchtower.enable=true someimage
</code></pre>
<p>If you wish to create a monitoring scope, you will need to <a href="https://containrrr.github.io/watchtower/running-multiple-instances">run multiple instances and set a scope for each of them</a>.</p>
<p>Watchtower filters running containers by testing them against each configured criteria. A container is monitored if all criteria are met. For example:
- If a container's name is on the monitoring name list (not empty <code>--name</code> argument) but it is not enabled (<em>centurylinklabs.watchtower.enable=false</em>), it won't be monitored;
- If a container's name is not on the monitoring name list (not empty <code>--name</code> argument), even if it is enabled (<em>centurylinklabs.watchtower.enable=true</em> and <code>--label-enable</code> flag is set), it won't be monitored;</p>
<h2 id="monitor_only">Monitor Only<a class="headerlink" href="#monitor_only" title="Permanent link">&para;</a></h2>
<p>Individual containers can be marked to only be monitored (without being updated).</p>
<p>To do so, set the <em>com.centurylinklabs.watchtower.monitor-only</em> label to <code>true</code> on that container.</p>
<pre><code class="docker">LABEL com.centurylinklabs.watchtower.monitor-only=&quot;true&quot;
</code></pre>
<p>Or, it can be specified as part of the <code>docker run</code> command line:</p>
<pre><code class="bash">docker run -d --label=com.centurylinklabs.watchtower.monitor-only=true someimage
</code></pre>
<p>When the label is specified on a container, watchtower treats that container exactly as if <a href="https://containrrr.dev/watchtower/arguments/#without_updating_containers"><code>WATCHTOWER_MONITOR_ONLY</code></a> was set, but the effect is limited to the individual container. </p>
@ -422,15 +533,15 @@
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -129,8 +137,6 @@
<div class="md-container" data-md-component="container">
@ -311,6 +317,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -328,9 +346,6 @@
</a>
<h1>Http api mode</h1>
<p>Watchtower provides an HTTP API mode that enables an HTTP endpoint that can be requested to trigger container updating. The current available endpoint list is:</p>
@ -394,15 +409,15 @@ services:
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -134,8 +142,6 @@
<div class="md-container" data-md-component="container">
@ -186,9 +192,7 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
Home
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 9h14V7H3v2m0 4h14v-2H3v2m0 4h14v-2H3v2m16 0h2v-2h-2v2m0-10v2h2V7h-2m0 6h2v-2h-2v2z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="." title="Home" class="md-nav__link md-nav__link--active">
@ -201,9 +205,7 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
@ -354,6 +356,18 @@
</li>
<li class="md-nav__item">
<a href="running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -370,9 +384,7 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
@ -401,9 +413,6 @@
</a>
<h1 align="center">
Watchtower
</h1>
@ -502,15 +511,15 @@
</div>
<script src="assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: ".",
features: [],
search: Object.assign({
worker: "assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -129,8 +137,6 @@
<div class="md-container" data-md-component="container">
@ -318,6 +324,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -335,9 +353,6 @@
</a>
<h1>Introduction</h1>
<p>Watchtower is an application that will monitor your running Docker containers and watch for changes to the images that those containers were originally started from. If watchtower detects that an image has changed, it will automatically restart the container using the new image.</p>
@ -416,15 +431,15 @@ CONTAINER ID IMAGE STATUS PORTS
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -134,8 +142,6 @@
<div class="md-container" data-md-component="container">
@ -318,9 +324,7 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
Lifecycle hooks
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 9h14V7H3v2m0 4h14v-2H3v2m0 4h14v-2H3v2m16 0h2v-2h-2v2m0-10v2h2V7h-2m0 6h2v-2h-2v2z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" title="Lifecycle hooks" class="md-nav__link md-nav__link--active">
@ -333,9 +337,7 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
@ -394,6 +396,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -410,9 +424,7 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
@ -481,9 +493,6 @@
</a>
<h1>Lifecycle hooks</h1>
<h2 id="executing_commands_before_and_after_updating">Executing commands before and after updating<a class="headerlink" href="#executing_commands_before_and_after_updating" title="Permanent link">&para;</a></h2>
@ -592,6 +601,20 @@ log statement containing the exit code will be reported.</p>
</a>
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-footer-nav__title">
<div class="md-ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
Running multiple instances
</div>
</div>
<div class="md-footer-nav__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
</div>
</a>
</nav>
</div>
@ -611,15 +634,15 @@ log statement containing the exit code will be reported.</p>
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -129,8 +137,6 @@
<div class="md-container" data-md-component="container">
@ -318,6 +324,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -335,9 +353,6 @@
</a>
<h1>Linked containers</h1>
<p>Watchtower will detect if there are links between any of the running containers and ensures that things are stopped/started in a way that won't break any of the links. If an update is detected for one of the dependencies in a group of linked containers, watchtower will stop and start all of the containers in the correct order so that the application comes back up correctly.</p>
@ -409,15 +424,15 @@
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -134,8 +142,6 @@
<div class="md-container" data-md-component="container">
@ -236,9 +242,7 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
Notifications
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 9h14V7H3v2m0 4h14v-2H3v2m0 4h14v-2H3v2m16 0h2v-2h-2v2m0-10v2h2V7h-2m0 6h2v-2h-2v2z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" title="Notifications" class="md-nav__link md-nav__link--active">
@ -253,9 +257,7 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
@ -406,6 +408,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -424,9 +438,7 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</span>
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
@ -503,9 +515,6 @@
</a>
<h1 id="notifications">Notifications<a class="headerlink" href="#notifications" title="Permanent link">&para;</a></h1>
<p>Watchtower can send notifications when containers are updated. Notifications are sent via hooks in the logging system, <a href="http://github.com/sirupsen/logrus">logrus</a>.
The types of notifications to send are set by passing a comma-separated list of values to the <code>--notifications</code> option (or corresponding environment variable <code>WATCHTOWER_NOTIFICATIONS</code>), which has the following valid values:</p>
@ -536,7 +545,7 @@ The types of notifications to send are set by passing a comma-separated list of
<li><code>--notification-email-server-tls-skip-verify</code> (env. <code>WATCHTOWER_NOTIFICATION_EMAIL_SERVER_TLS_SKIP_VERIFY</code>): Do not verify the TLS certificate of the mail server. This should be used only for testing.</li>
<li><code>--notification-email-server-port</code> (env. <code>WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT</code>): The port used to connect to the SMTP server to send e-mails through. Defaults to <code>25</code>.</li>
<li><code>--notification-email-server-user</code> (env. <code>WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER</code>): The username to authenticate with the SMTP server with.</li>
<li><code>--notification-email-server-password</code> (env. <code>WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD</code>): The password to authenticate with the SMTP server with.</li>
<li><code>--notification-email-server-password</code> (env. <code>WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD</code>): The password to authenticate with the SMTP server with. Can also reference a file, in which case the contents of the file are used.</li>
<li><code>--notification-email-delay</code> (env. <code>WATCHTOWER_NOTIFICATION_EMAIL_DELAY</code>): Delay before sending notifications expressed in seconds.</li>
<li><code>--notification-email-subjecttag</code> (env. <code>WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG</code>): Prefix to include in the subject tag. Useful when running multiple watchtowers.</li>
</ul>
@ -548,6 +557,7 @@ The types of notifications to send are set by passing a comma-separated list of
-e WATCHTOWER_NOTIFICATION_EMAIL_FROM=fromaddress@gmail.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_TO=toaddress@gmail.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.gmail.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587 \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=fromaddress@gmail.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=app_password \
-e WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 \
@ -604,7 +614,7 @@ networks:
<h3 id="slack">Slack<a class="headerlink" href="#slack" title="Permanent link">&para;</a></h3>
<p>If watchtower is monitoring the same Docker daemon under which the watchtower container itself is running (i.e. if you volume-mounted <em>/var/run/docker.sock</em> into the watchtower container) then it has the ability to update itself. If a new version of the <em>containrrr/watchtower</em> image is pushed to the Docker Hub, your watchtower will pull down the new image and restart itself automatically.</p>
<p>To receive notifications in Slack, add <code>slack</code> to the <code>--notifications</code> option or the <code>WATCHTOWER_NOTIFICATIONS</code> environment variable.</p>
<p>Additionally, you should set the Slack webhook URL using the <code>--notification-slack-hook-url</code> option or the <code>WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL</code> environment variable.</p>
<p>Additionally, you should set the Slack webhook URL using the <code>--notification-slack-hook-url</code> option or the <code>WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL</code> environment variable. This option can also reference a file, in which case the contents of the file are used.</p>
<p>By default, watchtower will send messages under the name <code>watchtower</code>, you can customize this string through the <code>--notification-slack-identifier</code> option or the <code>WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER</code> environment variable.</p>
<p>Other, optional, variables include:</p>
<ul>
@ -627,7 +637,7 @@ networks:
<h3 id="microsoft_teams">Microsoft Teams<a class="headerlink" href="#microsoft_teams" title="Permanent link">&para;</a></h3>
<p>To receive notifications in MSTeams channel, add <code>msteams</code> to the <code>--notifications</code> option or the <code>WATCHTOWER_NOTIFICATIONS</code> environment variable.</p>
<p>Additionally, you should set the MSTeams webhook URL using the <code>--notification-msteams-hook</code> option or the <code>WATCHTOWER_NOTIFICATION_MSTEAMS_HOOK_URL</code> environment variable.</p>
<p>Additionally, you should set the MSTeams webhook URL using the <code>--notification-msteams-hook</code> option or the <code>WATCHTOWER_NOTIFICATION_MSTEAMS_HOOK_URL</code> environment variable. This option can also reference a file, in which case the contents of the file are used.</p>
<p>MSTeams notifier could send keys/values filled by <code>log.WithField</code> or <code>log.WithFields</code> as MSTeams message facts. To enable this feature add <code>--notification-msteams-data</code> flag or set <code>WATCHTOWER_NOTIFICATION_MSTEAMS_USE_LOG_DATA=true</code> environment variable.</p>
<p>Example:</p>
<pre><code class="bash">docker run -d \
@ -650,6 +660,7 @@ networks:
containrrr/watchtower
</code></pre>
<p><code>-e WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN</code> or <code>--notification-gotify-token</code> can also reference a file, in which case the contents of the file are used.</p>
<p>If you want to disable TLS verification for the Gotify instance, you can use either <code>-e WATCHTOWER_NOTIFICATION_GOTIFY_TLS_SKIP_VERIFY=true</code> or <code>--notification-gotify-tls-skip-verify</code>. </p>
<h3 id="containrrrshoutrrr"><a href="https://github.com/containrrr/shoutrrr">containrrr/shoutrrr</a><a class="headerlink" href="#containrrrshoutrrr" title="Permanent link">&para;</a></h3>
<p>To send notifications via shoutrrr, the following command-line options, or their corresponding environment variables, can be set:</p>
@ -739,15 +750,15 @@ You can define multiple services by space separating the URLs. (See example belo
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -134,8 +142,6 @@
<div class="md-container" data-md-component="container">
@ -255,76 +261,13 @@
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
Private registries
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 9h14V7H3v2m0 4h14v-2H3v2m0 4h14v-2H3v2m16 0h2v-2h-2v2m0-10v2h2V7h-2m0 6h2v-2h-2v2z"/></svg>
</span>
</label>
<a href="./" title="Private registries" class="md-nav__link md-nav__link--active">
Private registries
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#create_the_configuration_file_manually" class="md-nav__link">
Create the configuration file manually
</a>
</li>
<li class="md-nav__item">
<a href="#i_username_and_password_for_gcloud" class="md-nav__link">
Username and Password for GCloud
</a>
</li>
<li class="md-nav__item">
<a href="#share_the_docker_configuration_file" class="md-nav__link">
Share the Docker configuration file
</a>
</li>
<li class="md-nav__item">
<a href="#credential_helpers" class="md-nav__link">
Credential helpers
</a>
<nav class="md-nav" aria-label="Credential helpers">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#example" class="md-nav__link">
Example
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
@ -388,6 +331,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -402,57 +357,8 @@
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</span>
Table of contents
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#create_the_configuration_file_manually" class="md-nav__link">
Create the configuration file manually
</a>
</li>
<li class="md-nav__item">
<a href="#i_username_and_password_for_gcloud" class="md-nav__link">
Username and Password for GCloud
</a>
</li>
<li class="md-nav__item">
<a href="#share_the_docker_configuration_file" class="md-nav__link">
Share the Docker configuration file
</a>
</li>
<li class="md-nav__item">
<a href="#credential_helpers" class="md-nav__link">
Credential helpers
</a>
<nav class="md-nav" aria-label="Credential helpers">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#example" class="md-nav__link">
Example
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
@ -469,11 +375,6 @@
</a>
<h1>Private registries</h1>
<p>Watchtower supports private Docker image registries. In many cases, accessing a private registry
requires a valid username and password (i.e., <em>credentials</em>). In order to operate in such an
environment, watchtower needs to know the credentials to access the registry. </p>
@ -503,11 +404,13 @@ password <code>auth</code> string:</p>
<blockquote>
<h3 id="i_username_and_password_for_gcloud"> Username and Password for GCloud<a class="headerlink" href="#i_username_and_password_for_gcloud" title="Permanent link">&para;</a></h3>
<p>For gcloud, we'll use <code>__json_key</code> as our username and the content
of <code>gcloudauth.json</code> as the password.</p>
</blockquote>
<p>When the watchtower Docker container is started, the created configuration file
<p>For gcloud, we'll use <code>_json_key</code> as our username and the content
of <code>gcloudauth.json</code> as the password.
<code>bash
echo -n "_json_key:$(cat gcloudauth.json)" | base64 -w0</code>
When the watchtower Docker container is started, the created configuration file
(<code>&lt;PATH&gt;/config.json</code> in this example) needs to be passed to the container:</p>
</blockquote>
<pre><code class="bash">docker run [...] -v &lt;PATH&gt;/config.json:/config.json containrrr/watchtower
</code></pre>
@ -521,14 +424,29 @@ additional configuration file is not necessary.</p>
</code></pre>
<p>When creating the watchtower container via docker-compose, use the following lines:</p>
<pre><code class="yaml">version: &quot;3&quot;
[...]
watchtower:
image: index.docker.io/containrrr/watchtower:latest
volumes:
<pre><code class="yaml">version: &quot;3.4&quot;
services:
watchtower:
image: index.docker.io/containrrr/watchtower:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- &lt;PATH_TO_HOME_DIR&gt;/.docker/config.json:/config.json
[...]
...
</code></pre>
<h4 id="docker_config_path">Docker Config path<a class="headerlink" href="#docker_config_path" title="Permanent link">&para;</a></h4>
<p>By default, watchtower will look for the <code>config.json</code> file in <code>/</code>, but this can be changed by setting the <code>DOCKER_CONFIG</code> environment variable to the directory path where your config is located. This is useful for setups where the config.json file is changed while the watchtower instance is running, as the changes will not be picked up for a mounted file if the inode changes.
Example usage:</p>
<pre><code class="yaml">version: &quot;3.4&quot;
services:
watchtower:
image: containrrr/watchtower
environment:
DOCKER_CONFIG: /config
volumes:
- /etc/watchtower/config/:/config/
- /var/run/docker.sock:/var/run/docker.sock
</code></pre>
<h2 id="credential_helpers">Credential helpers<a class="headerlink" href="#credential_helpers" title="Permanent link">&para;</a></h2>
@ -538,6 +456,11 @@ To be able to use this together with watchtower, we need to use a credential hel
helper in a separate container and mount it using volumes.</p>
<h3 id="example">Example<a class="headerlink" href="#example" title="Permanent link">&para;</a></h3>
<p>Example implementation for use with <a href="https://github.com/awslabs/amazon-ecr-credential-helper">amazon-ecr-credential-helper</a>:</p>
<p>Use the dockerfile below to build the <a href="https://github.com/awslabs/amazon-ecr-credential-helper">amazon-ecr-credential-helper</a>,
in a volume that may be mounted onto your watchtower container.</p>
<ol>
<li>Create the Dockerfile (contents below): </li>
</ol>
<pre><code class="Dockerfile">FROM golang:latest
ENV CGO_ENABLED 0
@ -554,44 +477,69 @@ RUN go build \
WORKDIR /go/bin/
</code></pre>
<p>and the docker-compose definition:</p>
<pre><code class="yaml">version: &quot;3&quot;
<ol>
<li>Use the following commands to build the aws-ecr-dock-cred-helper and store it's output in a volume:</li>
</ol>
<p>```shell script</p>
<h1 id="create_a_volume_to_store_the_command_once_built">Create a volume to store the command (once built)<a class="headerlink" href="#create_a_volume_to_store_the_command_once_built" title="Permanent link">&para;</a></h1>
<p>docker volume create helper </p>
<h1 id="build_the_container">Build the container<a class="headerlink" href="#build_the_container" title="Permanent link">&para;</a></h1>
<p>docker build -t aws-ecr-dock-cred-helper .</p>
<h1 id="build_the_command_and_store_it_in_the_new_volume_in_the_gobin_directory">Build the command and store it in the new volume in the /go/bin directory.<a class="headerlink" href="#build_the_command_and_store_it_in_the_new_volume_in_the_gobin_directory" title="Permanent link">&para;</a></h1>
<p>docker run -d --rm --name aws-cred-helper --volume helper:/go/bin aws-ecr-dock-cred-helper</p>
<pre><code>
3. Create a configuration file for docker, and store it in $HOME/.docker/config.json (replace the &lt;AWS_ACCOUNT_ID&gt;
placeholders with your AWS Account ID):
```json
{
&quot;credsStore&quot; : &quot;ecr-login&quot;,
&quot;HttpHeaders&quot; : {
&quot;User-Agent&quot; : &quot;Docker-Client/19.03.1 (XXXXXX)&quot;
},
&quot;auths&quot; : {
&quot;&lt;AWS_ACCOUNT_ID&gt;.dkr.ecr.us-west-1.amazonaws.com&quot; : {}
},
&quot;credHelpers&quot;: {
&quot;&lt;AWS_ACCOUNT_ID&gt;.dkr.ecr.us-west-1.amazonaws.com&quot; : &quot;ecr-login&quot;
}
}
</code></pre>
<ol>
<li>Create a docker-compose file (as an example) to help launch the container:</li>
</ol>
<p>and the docker-compose definition:</p>
<pre><code class="yaml">version: &quot;3.4&quot;
services:
# Check for new images and restart things if a new image exists
# for any of our containers.
watchtower:
image: index.docker.io/containrrr/watchtower:latest
image: containrrr/watchtower:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- &lt;PATH_TO_HOME_DIR&gt;/.docker/config.json:/config.json
- .docker/config.json:/config.json
- helper:/go/bin
environment:
- HOME=/
- PATH=$PATH:/go/bin
- AWS_REGION=&lt;AWS_REGION&gt;
- AWS_ACCESS_KEY_ID=&lt;AWS_ACCESS_KEY&gt;
- AWS_SECRET_ACCESS_KEY=&lt;AWS_SECRET_ACCESS_KEY&gt;
- AWS_REGION=us-west-1
volumes:
helper: {}
</code></pre>
<p>and for <code>&lt;PATH_TO_HOME_DIR&gt;/.docker/config.json</code>:</p>
<pre><code class="json"> {
&quot;HttpHeaders&quot; : {
&quot;User-Agent&quot; : &quot;Docker-Client/19.03.1 (XXXXXX)&quot;
},
&quot;credsStore&quot; : &quot;osxkeychain&quot;,
&quot;auths&quot; : {
&quot;xyzxyzxyz.dkr.ecr.eu-north-1.amazonaws.com&quot; : {},
&quot;https://index.docker.io/v1/&quot;: {}
},
&quot;credHelpers&quot;: {
&quot;xyzxyzxyz.dkr.ecr.eu-north-1.amazonaws.com&quot; : &quot;ecr-login&quot;,
&quot;index.docker.io&quot;: &quot;osxkeychain&quot;
}
}
helper:
external: true
</code></pre>
<p><em>Note:</em> <code>osxkeychain</code> can be changed to your preferred credentials helper.</p>
<p>A few additional notes:</p>
<ol>
<li>With docker-compose the volume (helper, in this case) MUST be set to <code>external: true</code>, otherwise docker-compose
will preface it with the directory name.</li>
<li>Note that "credsStore" : "ecr-login" is needed - and in theory if you have that you can remove the
credHelpers section </li>
<li>I have this running on an EC2 instance that has credentials assigned to it - so no keys are needed; however,
you may need to include the <code>AWS_ACCESS_KEY_ID</code> and <code>AWS_SECRET_ACCESS_KEY</code> environment variables as well.</li>
<li>An alternative to adding the various variables is to create a ~/.aws/config and ~/.aws/credentials files and
place the settings there, then mount the ~/.aws directory to / in the container.</li>
</ol>
@ -658,15 +606,15 @@ volumes:
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -129,8 +137,6 @@
<div class="md-container" data-md-component="container">
@ -318,6 +324,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -335,9 +353,6 @@
</a>
<h1>Remote hosts</h1>
<p>By default, watchtower is set-up to monitor the local Docker daemon (the same daemon running the watchtower container itself). However, it is possible to configure watchtower to monitor a remote Docker endpoint. When starting the watchtower container you can specify a remote Docker endpoint with either the <code>--host</code> flag or the <code>DOCKER_HOST</code> environment variable:</p>
@ -420,15 +435,15 @@
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -0,0 +1,447 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="http://containrrr.github.io/watchtower/running-multiple-instances/">
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
<title>Running multiple instances - Watchtower</title>
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
</head>
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header-nav md-grid" aria-label="Header">
<a href="http://containrrr.github.io/watchtower/" title="Watchtower" class="md-header-nav__button md-logo" aria-label="Watchtower">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 003-3 3 3 0 00-3-3 3 3 0 00-3 3 3 3 0 003 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
</a>
<label class="md-header-nav__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
</label>
<div class="md-header-nav__title" data-md-component="header-title">
<div class="md-header-nav__ellipsis">
<span class="md-header-nav__topic md-ellipsis">
Watchtower
</span>
<span class="md-header-nav__topic md-ellipsis">
Running multiple instances
</span>
</div>
</div>
<label class="md-header-nav__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active">
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</label>
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" data-md-component="search-reset" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header-nav__source">
<a href="https://github.com/containrrr/watchtower/" title="Go to repository" class="md-source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="http://containrrr.github.io/watchtower/" title="Watchtower" class="md-nav__button md-logo" aria-label="Watchtower">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 003-3 3 3 0 00-3-3 3 3 0 00-3 3 3 3 0 003 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
</a>
Watchtower
</label>
<div class="md-nav__source">
<a href="https://github.com/containrrr/watchtower/" title="Go to repository" class="md-source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." title="Home" class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item">
<a href="../introduction/" title="Introduction" class="md-nav__link">
Introduction
</a>
</li>
<li class="md-nav__item">
<a href="../usage-overview/" title="Usage overview" class="md-nav__link">
Usage overview
</a>
</li>
<li class="md-nav__item">
<a href="../arguments/" title="Arguments" class="md-nav__link">
Arguments
</a>
</li>
<li class="md-nav__item">
<a href="../notifications/" title="Notifications" class="md-nav__link">
Notifications
</a>
</li>
<li class="md-nav__item">
<a href="../container-selection/" title="Container selection" class="md-nav__link">
Container selection
</a>
</li>
<li class="md-nav__item">
<a href="../private-registries/" title="Private registries" class="md-nav__link">
Private registries
</a>
</li>
<li class="md-nav__item">
<a href="../linked-containers/" title="Linked containers" class="md-nav__link">
Linked containers
</a>
</li>
<li class="md-nav__item">
<a href="../remote-hosts/" title="Remote hosts" class="md-nav__link">
Remote hosts
</a>
</li>
<li class="md-nav__item">
<a href="../secure-connections/" title="Secure connections" class="md-nav__link">
Secure connections
</a>
</li>
<li class="md-nav__item">
<a href="../stop-signals/" title="Stop signals" class="md-nav__link">
Stop signals
</a>
</li>
<li class="md-nav__item">
<a href="../lifecycle-hooks/" title="Lifecycle hooks" class="md-nav__link">
Lifecycle hooks
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<a href="./" title="Running multiple instances" class="md-nav__link md-nav__link--active">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/containrrr/watchtower/edit/master/docs/running-multiple-instances.md" title="Edit this page" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
</a>
<h1>Running multiple instances</h1>
<p>By default, Watchtower will clean up other instances and won't allow multiple instances running on the same Docker host or swarm. It is possible to override this behavior by defining a <a href="https://containrrr.github.io/watchtower/arguments/#filter_by_scope">scope</a> to each running instance. </p>
<p>Notice that:
- Multiple instances can't run with the same scope;
- An instance without a scope will clean up other running instances, even if they have a defined scope;</p>
<p>To define an instance monitoring scope, use the <code>--scope</code> argument or the <code>WATCHTOWER_SCOPE</code> environment variable on startup and set the <em>com.centurylinklabs.watchtower.scope</em> label with the same value for the containers you want to include in this instance's scope (including the instance itself).</p>
<p>For example, in a Docker Compose config file:</p>
<pre><code class="json">version: '3'
services:
app-monitored-by-watchtower:
image: myapps/monitored-by-watchtower
labels:
- &quot;com.centurylinklabs.watchtower.scope=myscope&quot;
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 30 --scope myscope
labels:
- &quot;com.centurylinklabs.watchtower.scope=myscope&quot;
</code></pre>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid" aria-label="Footer">
<a href="../lifecycle-hooks/" title="Lifecycle hooks" class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-footer-nav__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</div>
<div class="md-footer-nav__title">
<div class="md-ellipsis">
<span class="md-footer-nav__direction">
Previous
</span>
Lifecycle hooks
</div>
</div>
</a>
</nav>
</div>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -129,8 +137,6 @@
<div class="md-container" data-md-component="container">
@ -318,6 +324,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -335,9 +353,6 @@
</a>
<h1>Secure connections</h1>
<p>Watchtower is also capable of connecting to Docker endpoints which are protected by SSL/TLS. If you've used <em>docker-machine</em> to provision your remote Docker host, you simply need to volume mount the certificates generated by <em>docker-machine</em> into the watchtower container and optionally specify <code>--tlsverify</code> flag.</p>
@ -416,15 +431,15 @@
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -1,51 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
<loc>http://containrrr.github.io/watchtower/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/introduction/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/usage-overview/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/arguments/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/notifications/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/container-selection/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/private-registries/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/linked-containers/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/remote-hosts/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/secure-connections/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/stop-signals/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/lifecycle-hooks/</loc>
<lastmod>2020-06-01</lastmod>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url><url>
<loc>http://containrrr.github.io/watchtower/running-multiple-instances/</loc>
<lastmod>2020-10-03</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>

Binary file not shown.

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -129,8 +137,6 @@
<div class="md-container" data-md-component="container">
@ -318,6 +324,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -335,9 +353,6 @@
</a>
<h1>Stop signals</h1>
<p>When watchtower detects that a running container needs to be updated it will stop the container by sending it a SIGTERM signal.
@ -415,15 +430,15 @@ If your container should be shutdown with a different signal you can communicate
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

@ -1,6 +1,4 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
@ -13,7 +11,7 @@
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-5.2.2">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.1">
@ -21,13 +19,17 @@
<link rel="stylesheet" href="../assets/stylesheets/main.a2408e81.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.38780c08.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.3f72e892.min.css">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
@ -42,7 +44,13 @@
</head>
<body dir="ltr">
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
@ -129,8 +137,6 @@
<div class="md-container" data-md-component="container">
@ -318,6 +324,18 @@
</li>
<li class="md-nav__item">
<a href="../running-multiple-instances/" title="Running multiple instances" class="md-nav__link">
Running multiple instances
</a>
</li>
</ul>
</nav>
</div>
@ -335,9 +353,6 @@
</a>
<h1>Usage overview</h1>
<p>Watchtower is itself packaged as a Docker container so installation is as simple as pulling the <code>containrrr/watchtower</code> image. If you are using ARM based architecture, pull the appropriate <code>containrrr/watchtower:armhf-&lt;tag&gt;</code> image from the <a href="https://hub.docker.com/r/containrrr/watchtower/tags/">containrrr Docker Hub</a>.</p>
@ -369,6 +384,9 @@ or by mounting the host's docker config file into the container (at the root of
containrrr/watchtower container_to_watch --debug
</code></pre>
<blockquote>
<p>NOTE: if you mount <code>config.json</code> in the manner above, changes from the host system will (generally) not be propagated to the running container. Mounting files into the Docker daemon uses bind mounts, which are based on inodes. Most applications (including <code>docker login</code> and <code>vim</code>) will not directly edit the file, but instead make a copy and replace the original file, which results in a new inode which in turn <em>breaks</em> the bind mount. <strong>As a workaround</strong>, you can create a symlink to your <code>config.json</code> file and then mount the symlink in the container. The symlinked file will always have the same inode, which keeps the bind mount intact and will ensure changes to the original file are propagated to the running container (regardless of the inode of the source file!).</p>
</blockquote>
<p>If you mount the config file as described above, be sure to also prepend the URL for the registry when starting up your watched image (you can omit the https://). Here is a complete docker-compose.yml file that starts up a docker container from a private repo at Docker Hub and monitors it with watchtower. Note the command argument changing the interval to 30s rather than the default 5 minutes.</p>
<pre><code class="json">version: &quot;3&quot;
services:
@ -450,15 +468,15 @@ services:
</div>
<script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
<script src="../assets/javascripts/bundle.5f27aba8.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
<script src="../assets/javascripts/vendor.77e55a48.min.js"></script>
<script src="../assets/javascripts/bundle.aa3f9871.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "..",
features: [],
search: Object.assign({
worker: "../assets/javascripts/worker/search.27c6a5e6.min.js"
worker: "../assets/javascripts/worker/search.4ac00218.min.js"
}, typeof search !== "undefined" && search)
})
</script>

Loading…
Cancel
Save