{"id":1053,"date":"2021-07-02T23:37:38","date_gmt":"2021-07-02T21:37:38","guid":{"rendered":"https:\/\/torstenzimmermann.de\/wordpress\/?p=1053"},"modified":"2022-05-05T13:32:39","modified_gmt":"2022-05-05T11:32:39","slug":"docker-container-automatisiert-aktualisieren","status":"publish","type":"post","link":"https:\/\/torstenzimmermann.de\/wordpress\/docker-container-automatisiert-aktualisieren\/","title":{"rendered":"Docker Container automatisiert aktualisieren"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Wer kennt es nicht, je mehr updates man h\u00e4ndisch machen muss, desto eher empfindet man sie als nervend und macht sie deshalb nicht. Ein Grund mehr das 0 8 15 Containerupdate im Hintergrund laufen zu lassen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wollte man ein Docker Container aktualisieren bedeutet dies: Container duplizieren, alten entfernen, ggfs Ports wieder auf den richtigen Stand bringen da ja keine 2 Container die selben Ports haben d\u00fcrfen. Starten nicht vergessen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das kann man sporadisch mit 1-2 Containern machen aber auch da nervt das schnell.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es geht besser:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Vollautomatisch:<br><br><\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d --restart unless-stopped --name watchtower -v \/var\/run\/docker.sock:\/var\/run\/docker.sock containrrr\/watchtower --cleanup --include-stopped --schedule \"0 0 3 ? * SUN\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>hier wird jeden Sonntag um 3 Uhr alle Docker Container aktualisiert. F\u00fchlt euch frei die Zeiten nach bedarf zu \u00e4ndern.<br><br><strong>Definitiv die von Rudi hier empfohlene Variante<\/strong><br><br><\/li><li>Semi Automatisch<br><br>F\u00fcr alle Container:<br>docker run -d &#8211;name watchtowerjob -v \/var\/run\/docker.sock:\/var\/run\/docker.sock containrrr\/watchtower:latest &#8211;cleanup &#8211;include-stopped &#8211;run-once<br><br>F\u00fcr ausgew\u00e4hlte Container (in diesen Fall &#8222;wusel&#8220; und &#8222;dusel&#8220;<br>docker run -d &#8211;name watchtower -v \/var\/run\/docker.sock:\/var\/run\/docker.sock containrrr\/watchtower:latest &#8211;cleanup &#8211;include-stopped wusel dusel<br><br>Kleine Anmerkung: Der erste Start dauert ein Moment. Der Container beendet sich wenn er fertig ist.<br><br><\/li><li>Wir rufen periodisch den Container wie folgt auf:<br>docker start watchtowerjob -a<br><br><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Das k\u00f6nnte man z.b. als Cronjob jede Woche laufen lassen.<br>Hier noch ein paar erl\u00e4uterungen was der Befehl oben so macht:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/07\/Unbenannt-1.png\" alt=\"\" class=\"wp-image-1057\" width=\"840\" height=\"87\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/07\/Unbenannt-1.png 955w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/07\/Unbenannt-1-300x31.png 300w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/07\/Unbenannt-1-768x80.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><figcaption>So k\u00f6nnte die Ausgabe dann aussehen<\/figcaption><\/figure>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\"><\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Parameter<\/strong><\/td><td><strong>Bedeutung<\/strong><\/td><\/tr><tr><td>docker run<\/td><td>Docker-Run-Command zum Starten eines Docker-Containers<\/td><\/tr><tr><td>-d<\/td><td>Der Container soll detached (also im Hintergrund) laufen<\/td><\/tr><tr><td>\u2013name watchtowerjob<\/td><td>Der Name des Watchtowercontainers (beliebig)<\/td><\/tr><tr><td>-v \/var\/run\/docker.sock:\/var\/run\/docker.sock<\/td><td>Da docker Container eigentlich abgeschottet sind, m\u00fcssen wir den docker-socket in den watchtower-container mounten. Sonst hat der Watchtower-Container keinen Zugriff auf die zu \u00fcberwachenden Cnotainer.<\/td><\/tr><tr><td>containrrr\/watchtower:latest<\/td><td>Das image (mit dem latest-Tag) aus dem der Watchtower-Container gebaut wird<\/td><\/tr><tr><td>\u2013cleanup<\/td><td>Alte Images werden gel\u00f6scht, nachdem der Container geupdatet worden ist. Ist dieser Parameter nicht gesetzt, bleiben alte Images erhalten und \u201cm\u00fcllen\u201d so nach und nach das System zu.<\/td><\/tr><tr><td>\u2013include-stopped<\/td><td>Auch aktuell gestoppte Container sollen in das Update einbezogen werden.<\/td><\/tr><tr><td>\u2013run-once<\/td><td>Sorgt daf\u00fcr, dass der Container nur einmal ausgef\u00fchrt wird.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Getestet mit DSM 7 (Linux DiskStation 3.10.108 #41890 SMP Fri Jun 25 02:40:49 CST 2021 x86_64 GNU\/Linux synology_avoton_1517+)<\/p>\n<div class=\"thanks_button_div\" \n                  style=\"float: left; margin-right: 10px;\"><div id=\"thanksButtonDiv_1053_1\" style=\"background-image:url(https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/plugins\/thanks-you-counter-button\/images\/thanks_large_blue.png); background-repeat:no-repeat; float: left; display: inline;\"\n                onmouseover=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_1053_1', true);\" \n                onmouseout=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_1053_1', false);\"\n                onclick=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_1053_1', false);\" >\n                <input type=\"button\" onclick=\"thankYouButtonClick(1053, 'You left &ldquo;Thanks&rdquo; already for this post')\" value=\"Thank You 5\"\n                  class=\"thanks_button thanks_large thanks_blue\"\n                  style=\"  font-family: Verdana, Arial, Sans-Serif; font-size: 14px; font-weight: normal;; color:#ffffff;\"\n                  id=\"thanksButton_1053_1\" title=\"Click to leave &ldquo;Thanks&rdquo; for this post\"\/>\n             <\/div><div id=\"ajax_loader_1053_1\" style=\"display:inline;visibility: hidden;\"><img decoding=\"async\" alt=\"ajax loader\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/plugins\/thanks-you-counter-button\/images\/ajax-loader.gif\" \/><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Wer kennt es nicht, je mehr updates man h\u00e4ndisch machen muss, desto eher empfindet man sie als nervend und macht sie deshalb nicht. Ein Grund mehr das 0 8 15 Containerupdate im Hintergrund laufen zu lassen. Wollte man ein Docker Container aktualisieren bedeutet dies: Container duplizieren, alten entfernen, ggfs Ports wieder auf den richtigen Stand [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46,45],"tags":[],"class_list":["post-1053","post","type-post","status-publish","format-standard","hentry","category-docker","category-synonlogy-nas"],"_links":{"self":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts\/1053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/comments?post=1053"}],"version-history":[{"count":5,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts\/1053\/revisions"}],"predecessor-version":[{"id":1208,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts\/1053\/revisions\/1208"}],"wp:attachment":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/media?parent=1053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/categories?post=1053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/tags?post=1053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}