{"id":7094,"date":"2026-09-28T17:00:43","date_gmt":"2026-09-28T13:30:43","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=7094"},"modified":"2026-09-28T17:00:43","modified_gmt":"2026-09-28T13:30:43","slug":"%d8%a8%d9%87%d8%b1%d9%88%d8%b2%d8%b1%d8%b3%d8%a7%d9%86%db%8c-%d8%ae%d9%88%d8%af%da%a9%d8%a7%d8%b1-image%d9%87%d8%a7%db%8c-%da%a9%d8%a7%d9%86%d8%aa%db%8c%d9%86%d8%b1-%d8%af%d8%a7%da%a9%d8%b1","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d8%a8%d9%87%d8%b1%d9%88%d8%b2%d8%b1%d8%b3%d8%a7%d9%86%db%8c-%d8%ae%d9%88%d8%af%da%a9%d8%a7%d8%b1-image%d9%87%d8%a7%db%8c-%da%a9%d8%a7%d9%86%d8%aa%db%8c%d9%86%d8%b1-%d8%af%d8%a7%da%a9%d8%b1\/","title":{"rendered":"\u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 Image\u0647\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0627\u06a9\u0631 \u0628\u0627 Watchtower \u062f\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Watchtower<\/strong> \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc Docker \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0631\u062f\u0647 \u0648 \u0648\u0642\u062a\u06cc Image\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc \u062f\u0631 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc\u0647\u0627\u06cc\u0634\u0627\u0646 \u0645\u0648\u062c\u0648\u062f \u0628\u0627\u0634\u062f\u060c \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0634\u0627\u0646 \u0645\u06cc\u06a9\u0646\u062f. \u0628\u0647 \u0633\u0648\u06a9\u062a Docker \u0645\u062a\u0635\u0644 \u0634\u062f\u0647\u060c \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc\u0647\u0627\u06cc Image \u0631\u0627 \u062f\u0631 \u0628\u0627\u0632\u0647\u0647\u0627\u06cc \u0642\u0627\u0628\u0644-\u062a\u0646\u0638\u06cc\u0645 Poll \u06a9\u0631\u062f\u0647\u061b \u0648 \u0648\u0642\u062a\u06cc \u062a\u063a\u06cc\u06cc\u0631 Digest\u0627\u06cc \u0631\u0627 \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc\u062f\u0647\u062f\u060c Image \u062c\u062f\u06cc\u062f \u0631\u0627 \u0645\u06cc\u06a9\u0634\u062f (Pull)\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0631\u062f\u0647 \u0648 \u062c\u0627\u0646\u0634\u06cc\u0646\u06cc \u0631\u0627 \u0628\u0627 Image \u0628\u0647-\u0631\u0648\u0632 \u0634\u062f\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0628\u0631\u0627\u06cc Homelab\u0647\u0627\u060c \u0645\u062d\u06cc\u0637\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0648 \u0628\u0627\u0631\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u06a9\u0645-\u0628\u062d\u0631\u0627\u0646\u06cc\u062a\u06cc\u2014which \u062f\u0631 \u0622\u0646\u200c\u0647\u0627 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0628\u062f\u0648\u0646 Pull \u0648 Restart \u062f\u0633\u062a\u06cc \u0628\u0647-\u0631\u0648\u0632 \u0628\u0645\u0627\u0646\u0646\u062f\u2014\u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647 \u0645\u0647\u0645:<\/strong> \u067e\u0631\u0648\u0698\u0647 Watchtower \u062f\u0631 \u062f\u0633\u0627\u0645\u0628\u0631 \u06f2\u06f0\u06f2\u06f5 \u062a\u0648\u0633\u0637 \u0645\u0627\u0644\u06a9\u0634 Archive \u0634\u062f\u0647 \u0648 \u0627\u0644\u0627\u0646 \u0641\u0642\u0637-\u062e\u0648\u0627\u0646\u062f\u0646\u06cc \u0627\u0633\u062a. \u0645\u062e\u0632\u0646 \u0647\u0645\u0686\u0646\u0627\u0646 \u0645\u0648\u062c\u0648\u062f\u060c Issue\u0647\u0627 \u0648 Discussion\u0647\u0627 \u0642\u0641\u0644 \u0634\u062f\u0647 \u0648 \u0622\u062e\u0631\u06cc\u0646 Release \u067e\u0627\u06cc\u062f\u0627\u0631 \u06cc\u0639\u0646\u06cc v1.7.1 \u0627\u0633\u062a. \u0628\u062d\u062b\u0647\u0627\u06cc \u062c\u0627\u0645\u0639\u0647 (\u0634\u0627\u0645\u0644 r\/docker) \u0627\u063a\u0644\u0628 \u0645\u06cc\u067e\u0631\u0633\u0646\u062f Watchtower Deprecated \u06cc\u0627 Discontinued \u0634\u062f\u0647 \u06cc\u0627 \u0646\u0647. \u062a\u0627 \u0632\u0645\u0627\u0646 \u0646\u06af\u0627\u0631\u0634\u060c Image \u0647\u0645\u0686\u0646\u0627\u0646 \u0631\u0648\u06cc Docker Hub \u0648 GHCR \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a \u0648 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0632\u06cc\u0627\u062f\u06cc \u0647\u0646\u0648\u0632 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637\u0647\u0627\u06cc \u063a\u06cc\u0631-\u0628\u062d\u0631\u0627\u0646\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u0646\u062f. \u0628\u0631\u0627\u06cc \u062f\u06cc\u067e\u0644\u0648\u06cc\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u06cc\u0627 \u067e\u0627\u06cc\u067e\u200c\u0644\u0627\u06cc\u0646\u0647\u0627\u06cc \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 \u0628\u0627 \u0627\u0644\u0632\u0627\u0645\u0627\u062a Rollback\u060c \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 <strong>Renovate<\/strong> \u06cc\u0627 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627\u06cc CI\/CD-\u0645\u062d\u0648\u0631 \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f\u2014which \u0628\u0639\u062f\u0627\u064b \u062f\u0631 \u0627\u06cc\u0646 tutorial \u067e\u0648\u0634\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0648\u0646\u062f.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Watchtower \u0627\u0646\u062a\u062e\u0627\u0628 \u062e\u0648\u0628\u06cc \u0627\u0633\u062a \u0648\u0642\u062a\u06cc \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627\u06cc Image \u0631\u0627 \u0631\u0648\u06cc \u0647\u0627\u0633\u062a \u0645\u0646\u0641\u0631\u062f \u06cc\u0627 Fleet \u06a9\u0648\u0686\u06a9\u06cc Hands-off \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u2014to\u200c\u0647\u0645\u0631\u0627\u0647 \u0627\u0639\u0644\u0627\u0646\u0647\u0627\u06cc \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc\u0646\u06cc\u0645\u0627\u0644. \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637\u0647\u0627\u06cc \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646\u2014which \u0628\u0647 \u062a\u0627\u06cc\u06cc\u062f \u062a\u063a\u06cc\u06cc\u0631\u060c Rollback \u06cc\u0627 Orchestration \u0628\u062f\u0648\u0646-\u0642\u0637\u0639\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f\u2014\u0645\u0646\u0627\u0633\u0628 \u0646\u06cc\u0633\u062a\u061b \u062f\u0631 \u0622\u0646 \u0645\u0648\u0627\u0631\u062f\u060c \u0631\u0648\u06cc\u06a9\u0631\u062f CI\/CD-\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0645\u0646\u0627\u0633\u0628\u062a\u0631 \u0627\u0633\u062a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0627\u06cc\u0646 tutorial \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0633\u0631\u0648\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 (22.04 \u06cc\u0627 \u0628\u0639\u062f\u062a\u0631)<\/strong>\u2014\u0637\u0628\u0642 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0633\u0631\u0648\u0631 \u0628\u0627 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f\u2014with \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 root \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0648 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0641\u0639\u0627\u0644.<\/li>\n\n\n\n<li><strong>Docker \u0646\u0635\u0628\u200c\u0634\u062f\u0647 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631<\/strong>\u2014\u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u06af\u0627\u0645\u0647\u0627\u06cc \u06f1 \u0648 \u06f2 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0646\u062d\u0648\u0647 \u0646\u0635\u0628 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0627\u06a9\u0631 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u00bb \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f. \u0628\u0631\u0627\u06cc Pull \u06a9\u0631\u062f\u0646 Image\u0647\u0627 \u0627\u0632 \u0645\u06cc\u0631\u0648\u0631 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f (hub.cr.parmincloud.ir) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u0627\u06af\u0631 \u0642\u0635\u062f \u062a\u0633\u062a \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0628\u0627 Image \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0647 <strong>\u062d\u0633\u0627\u0628 Docker Hub<\/strong> \u0648 \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 Push \u06a9\u0631\u062f\u0646 Image\u0647\u0627 \u0646\u06cc\u0627\u0632 \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u0634\u062a.<\/li>\n\n\n\n<li><strong>Docker Compose \u0646\u0635\u0628\u200c\u0634\u062f\u0647.<\/strong> \u0631\u0648\u06cc \u0646\u0633\u062e\u0647\u0647\u0627\u06cc \u0641\u0639\u0644\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u060c Docker Compose v2 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0633\u062a (\u0628\u0627 <code>docker compose<\/code>\u2014\u0628\u062f\u0648\u0646 \u062e\u0637 \u062a\u06cc\u0631\u0647\u2014\u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc\u0634\u0648\u062f).<\/li>\n\n\n\n<li>\u0628\u0631\u0627\u06cc \u06af\u0627\u0645 \u06f6 (HTTP API \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Watchtower)\u060c <strong>curl \u0646\u0635\u0628\u200c\u0634\u062f\u0647<\/strong> \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627\u06cc On-Demand \u0631\u0627 Trigger \u06a9\u0646\u06cc\u062f (<code>sudo apt install curl<\/code> \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u0628\u0648\u062f).<\/li>\n\n\n\n<li>\u0627\u06af\u0631 \u0642\u0635\u062f \u0631\u0627\u0647\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0639\u0644\u0627\u0646\u0647\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644\u06cc \u0628\u0627 Gmail \u062f\u0627\u0631\u06cc\u062f\u060c <strong>\u062d\u0633\u0627\u0628 Gmail \u0628\u0627 Verification-2-Step \u0641\u0639\u0627\u0644 \u0648 App Password \u0627\u062e\u062a\u0635\u0627\u0635\u06cc.<\/strong> Google \u0631\u0645\u0632\u0639\u0628\u0648\u0631 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc SMTP \u0631\u0627 Deprecated \u06a9\u0631\u062f\u0647\u061b App Password\u0647\u0627 \u0631\u0648\u0634 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc\u0634\u062f\u0647 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647\u0627\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u06a9\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Watchtower \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0648\u062f \u06a9\u0647 \u0633\u0648\u06a9\u062a Docker \u0631\u0627 Mount \u06a9\u0631\u062f\u0647 \u0648 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc\u0647\u0627\u06cc Image \u0631\u0627 \u062f\u0631 \u0628\u0627\u0632\u0647 \u062a\u0646\u0638\u06cc\u0645\u0634\u062f\u0647 Poll \u0645\u06cc\u06a9\u0646\u062f\u061b \u0648\u0642\u062a\u06cc Digest \u0631\u06cc\u0645\u0648\u062a \u0628\u0627 Image \u062f\u0631-\u062d\u0627\u0644-\u0627\u062c\u0631\u0627 \u062a\u0641\u0627\u0648\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c Image \u062c\u062f\u06cc\u062f \u0631\u0627 \u06a9\u0634\u06cc\u062f\u0647\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062c\u062f\u06cc\u062f\u06cc \u0631\u0627 \u0628\u0627 Image \u0628\u0647-\u0631\u0648\u0632 \u0634\u062f\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc\u06a9\u0646\u062f.<\/li>\n\n\n\n<li>\u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f \u06a9\u062f\u0627\u0645 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0628\u0647\u0631\u0648\u0632 \u0634\u0648\u0646\u062f: \u0628\u0627 \u067e\u0627\u0633 \u062f\u0627\u062f\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u06cc\u0627 \u0628\u0627 Label\u0647\u0627 (<code>com.centurylinklabs.watchtower.enable=true<\/code> \u0647\u0645\u0631\u0627\u0647 <code>--label-enable<\/code>\u060c \u06cc\u0627 <code>com.centurylinklabs.watchtower.enable=false<\/code> \u0628\u0631\u0627\u06cc \u0645\u0633\u062a\u062b\u0646\u06cc \u06a9\u0631\u062f\u0646 \u0627\u0632 Instance \u0646\u0638\u0627\u0631\u062a-\u0628\u0631-\u0647\u0645\u0647).<\/li>\n\n\n\n<li>\u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc \u062e\u0635\u0648\u0635\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 <code>REPO_USER<\/code> \u0648 <code>REPO_PASS<\/code> (Docker Hub\u060c GHCR) \u06cc\u0627 Credential Helper\u0647\u0627\u06cc \u0631\u062c\u06cc\u0633\u062a\u0631-\u0645\u0634\u062e\u0635 (\u0645\u062b\u0644\u0627\u064b AWS ECR) \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u0634\u0648\u062f\u061b \u0647\u0631\u06af\u0632 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644\u0647\u0627\u06cc Compose \u06a9\u0627\u0645\u06cc\u062a\u200c\u0634\u062f\u0647 \u0628\u0647 Version Control \u0647\u0627\u0631\u062f-\u06a9\u062f \u0646\u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u0627\u0639\u0644\u0627\u0646\u0647\u0627 \u0631\u0627 \u0645\u06cc\u062a\u0648\u0627\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u06cc\u0645\u06cc\u0644 (SMTP)\u060c Webhook \u06cc\u0639\u0646\u06cc Slack \u06cc\u0627 Webhook \u0639\u0645\u0648\u0645\u06cc (shoutrrr) \u0641\u0631\u0633\u062a\u0627\u062f \u062a\u0627 \u0627\u0632 \u062a\u0634\u062e\u06cc\u0635 \u06cc\u0627 \u0627\u0639\u0645\u0627\u0644 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627 \u0628\u0627\u062e\u0628\u0631 \u0634\u0648\u06cc\u062f.<\/li>\n\n\n\n<li><strong>HTTP API \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Watchtower<\/strong> (\u0628\u0627 <code>--http-api-update<\/code> \u0641\u0639\u0627\u0644 \u0648 \u0628\u0627 <code>WATCHTOWER_HTTP_API_TOKEN<\/code> \u0645\u062d\u0627\u0641\u0638\u062a \u0645\u06cc\u0634\u0648\u062f) \u0627\u0645\u06a9\u0627\u0646 Trigger\u0647\u0627\u06cc \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc On-Demand \u0631\u0627 \u0645\u06cc\u062f\u0647\u062f\u061b \u0628\u062f\u0648\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0648 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644\u060c \u067e\u0648\u0631\u062a API \u0631\u0627 \u0639\u0645\u0648\u0645\u06cc \u0627\u0641\u0634\u0627 \u0646\u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u062d\u0627\u0644\u062a \u0641\u0642\u0637-\u0645\u0627\u0646\u06cc\u062a\u0648\u0631 (<code>--monitor-only<\/code> \u06cc\u0627 <code>WATCHTOWER_MONITOR_ONLY=true<\/code>) Image\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0686\u06a9 \u0648 \u0627\u0639\u0644\u0627\u0646 \u0645\u06cc\u0641\u0631\u0633\u062a\u062f\u2014\u0628\u062f\u0648\u0646 Restart \u06a9\u0631\u062f\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u061b \u0633\u067e\u0633 \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627 \u0631\u0627 \u062f\u0633\u062a\u06cc \u06cc\u0627 \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9\u0628\u0627\u0631\u0647 <code>--run-once<\/code> \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u0628\u0631\u0627\u06cc \u067e\u0627\u06cc\u067e\u200c\u0644\u0627\u06cc\u0646\u0647\u0627\u06cc \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646\u2014which \u0628\u0647 Rollback\u060c \u062a\u0627\u06cc\u06cc\u062f \u06cc\u0627 \u062f\u06cc\u067e\u0644\u0648\u06cc \u0628\u062f\u0648\u0646-\u0642\u0637\u0639\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f\u2014\u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc CI\/CD-\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 (\u0645\u062b\u0644\u0627\u064b Renovate) \u0631\u0627 \u0628\u0647 Watchtower \u062a\u0631\u062c\u06cc\u062d \u0628\u062f\u0647\u06cc\u062f\u061b Watchtower \u0628\u0631\u0627\u06cc Homelab\u060c \u062a\u0648\u0633\u0639\u0647 \u0648 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 \u06a9\u0645-\u0628\u062d\u0631\u0627\u0646\u06cc\u062a\u06cc \u0639\u0627\u0644\u06cc \u0627\u0633\u062a.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u062f\u0631\u06a9 \u0646\u062d\u0648\u0647 \u06a9\u0627\u0631 Watchtower<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Watchtower \u062f\u0631\u0648\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Docker\u0627\u06cc \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0648 \u0628\u0627 Mount \u06a9\u0631\u062f\u0646 \u0633\u0648\u06a9\u062a \u062f\u06cc\u0645\u0646 Docker (<code>\/var\/run\/docker.sock<\/code>) \u062f\u0631\u0648\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Watchtower\u060c \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0647\u0627\u0633\u062a \u0631\u0627 \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u06af\u06cc\u0631\u062f. \u0647\u06cc\u0686 \u0646\u0631\u0645\u0627\u0641\u0632\u0627\u0631\u06cc \u0631\u0648\u06cc \u0647\u0627\u0633\u062a \u0646\u0635\u0628 \u0646\u0645\u06cc\u06a9\u0646\u062f. Watchtower \u0628\u0647 Mount \u0633\u0648\u06a9\u062a Docker \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u2014\u0686\u0648\u0646 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0627 API \u062f\u06cc\u0645\u0646 Docker \u0628\u0631\u0627\u06cc \u0641\u0647\u0631\u0633\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u060c \u0628\u0627\u0632\u0631\u0633\u06cc \u0645\u062a\u0627\u062f\u06cc\u062a\u0627\u06cc Image\u0647\u0627\u060c Pull \u06a9\u0631\u062f\u0646 Image\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0648 \u0635\u0627\u062f\u0631 \u06a9\u0631\u062f\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a Stop \u0648 Start\u2014\u0647\u0645\u0627\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u06a9\u0647 \u062f\u0633\u062a\u06cc \u0628\u0627 <code>docker pull<\/code> \u0648 <code>docker run<\/code> \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647\u06cc\u062f\u2014\u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0686\u0631\u062e\u0647 \u062d\u06cc\u0627\u062a \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0631\u062e\u0647 \u062d\u06cc\u0627\u062a\u060c \u062d\u0644\u0642\u0647 Polling \u0627\u0633\u062a. \u062f\u0631 \u0647\u0631 \u062f\u0648\u0631\u060c Watchtower \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647\u0627\u0646\u062f (\u0647\u0645\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u060c \u06cc\u0627 \u0641\u0642\u0637 \u0645\u0646\u0637\u0628\u0642 \u0628\u0627 \u0646\u0627\u0645\u0647\u0627 \u06cc\u0627 Label\u0647\u0627) \u0628\u0627\u0632\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u060c \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc Image (Docker Hub\u060c GHCR\u060c ECR \u0648 \u063a\u06cc\u0631\u0647) \u0631\u0627 \u0628\u0631\u0627\u06cc Digest \u062a\u06af Image\u0650 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u0634\u062f\u0647 \u06a9\u0648\u0626\u0631\u06cc \u0645\u06cc\u06a9\u0646\u062f. \u0622\u0646 Digest \u0631\u0627 \u0628\u0627 Digest Image\u0627\u06cc \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0631 \u062f\u0631-\u062d\u0627\u0644-\u0627\u062c\u0631\u0627 \u0627\u0632 \u0622\u0646 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Digest \u0686\u06cc\u0633\u062a\u061f<\/strong> Digest\u060c Hash \u06cc\u06a9\u062a\u0627\u06cc SHA256 \u0627\u0633\u062a \u06a9\u0647 Build \u062f\u0642\u06cc\u0642 Image\u0627\u06cc \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0645\u06cc\u06a9\u0646\u062f. \u062f\u0648 Image \u0628\u0627 \u0647\u0645\u0627\u0646 \u062a\u06af \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f Digest\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f\u2014if Image \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 Push \u0634\u062f\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f\u060c \u0627\u0642\u062f\u0627\u0645\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u0634\u062f\u0647 \u0648 Watchtower \u062a\u0627 Poll \u0628\u0639\u062f\u06cc \u0645\u06cc\u062e\u0648\u0627\u0628\u062f. \u0627\u06af\u0631 \u062a\u0641\u0627\u0648\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f\u060c Watchtower Image \u062c\u062f\u06cc\u062f \u0631\u0627 \u06a9\u0634\u06cc\u062f\u0647\u060c \u06a9\u0627\u0646\u062a\u06cc\u0631 \u062f\u0631-\u062d\u0627\u0644-\u0627\u062c\u0631\u0627 \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 Image \u0628\u0647-\u0631\u0648\u0632 \u0634\u062f\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc\u06a9\u0646\u062f\u2014\u0628\u0627 \u0647\u0645\u0627\u0646 \u0646\u0627\u0645 \u0648 \u062a\u06af Image \u0648 \u0647\u0645\u0627\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0631 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u0622\u0646\u200c\u0647\u0627 \u0634\u0631\u0648\u0639 \u0634\u062f\u0647 \u0628\u0648\u062f\u061b \u0634\u0627\u0645\u0644 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc\u060c Volume\u0647\u0627\u060c \u0634\u0628\u06a9\u0647\u0647\u0627\u060c Port Binding\u0647\u0627 \u0648 \u0633\u06cc\u0627\u0633\u062a Restart. <strong>\u0647\u06cc\u0686 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u0627\u06cc \u062d\u06cc\u0646 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0627\u0632 \u062f\u0633\u062a \u0646\u0645\u06cc\u0631\u0648\u062f.<\/strong> \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc\u060c Watchtower \u0645\u06cc\u062a\u0648\u0627\u0646\u062f Image \u0642\u062f\u06cc\u0645\u06cc \u0631\u0627 \u0628\u0639\u062f \u0627\u0632 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0645\u0648\u0641\u0642 \u062d\u0630\u0641 \u06a9\u0646\u062f (<code>--cleanup<\/code>) \u062a\u0627 \u0627\u0632 \u0627\u0646\u0628\u0627\u0634\u062a Image\u0647\u0627\u06cc \u0628\u0644\u0627\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u06cc\u062f \u062d\u0644\u0642\u0647 \u0647\u0631 \u0686\u0646\u062f \u0648\u0642\u062a \u0627\u062c\u0631\u0627 \u0634\u0648\u062f. \u0628\u0627 Interval \u0645\u0628\u062a\u0646\u06cc-\u0628\u0631-\u0632\u0645\u0627\u0646\u060c \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u06f8\u06f6\u06f4\u06f0\u06f0 \u062b\u0627\u0646\u06cc\u0647 (\u06f2\u06f4 \u0633\u0627\u0639\u062a) \u0627\u0633\u062a. \u0628\u0627 \u0632\u0645\u0627\u0646\u0628\u0646\u062f\u06cc Cron-\u0645\u0627\u0646\u0646\u062f \u06cc\u0639\u0646\u06cc <code>--schedule<\/code>\u060c \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0634\u062e\u0635 \u0645\u06cc\u06a9\u0646\u06cc\u062f \u0686\u06a9\u0647\u0627 \u06a9\u0650\u06cc \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f (\u0645\u062b\u0644\u0627\u064b \u0631\u0648\u0632\u0627\u0646\u0647 \u0633\u0627\u0639\u062a \u06f4 \u0635\u0628\u062d). <strong>\u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f &#8211;interval \u0648 &#8211;schedule \u0631\u0627 \u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/strong> \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Watchtower \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062d\u062f\u0648\u062f \u06f1\u06f0-\u06f1\u06f5 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u0645\u0635\u0631\u0641 \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> <code> +------------------+\n  | Container Running|\n  +--------+---------+\n           |\n           v\n  +------------------+\n  |  Poll Registry   |\n  |  (digest check)  |\n  +--------+---------+\n           |\n           v\n  +------------------+\n  | Compare Digest   |\n  +------------------+\n           |\n     +-----+-----+\n     |           |\n     v           v\n No Change    Change Detected\n     |           |\n     v           v\n +-------+   +--------+\n | Sleep |   | Pull   |\n | until |   | then   |\n | next  |   | Stop   |\n | poll  |   | then   |\n +-------+   |Restart |\n +-------+   +--------+<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f1 \u2014 \u0627\u062c\u0631\u0627\u06cc Watchtower \u0628\u0627 docker run<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u062f\u0627\u0642\u0644 \u0628\u0647 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631-\u062d\u0627\u0644-\u0627\u062c\u0631\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u062a\u0627 Watchtower \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u0634 \u06a9\u0646\u062f. \u0645\u062b\u0627\u0644 \u0632\u06cc\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0631 \u0637\u0648\u0644\u0627\u0646\u06cc-\u0639\u0645\u0631\u06cc \u0627\u0632 Image \u0631\u0633\u0645\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0645\u06cc\u0633\u0627\u0632\u062f \u062a\u0627 \u0628\u0639\u062f\u0627\u064b \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0627\u0634 \u0631\u0627 \u0628\u0627 Watchtower \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0628\u0645\u0627\u0646\u062f \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d \\\n  --name ubuntu-container \\\n  ubuntu \\\n  sleep infinity<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Watchtower \u0631\u0627 \u0634\u0631\u0648\u0639 \u0648 \u0628\u0647 \u0622\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631\u067e\u0630\u06cc\u0631\u06cc \u0627\u0632 \u062a\u06af Pin-\u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u061b Release \u067e\u0627\u06cc\u062f\u0627\u0631 \u0641\u0639\u0644\u06cc 1.7.1 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d \\\n  --name watchtower \\\n  -v \/var\/run\/docker.sock:\/var\/run\/docker.sock \\\n  containrrr\/watchtower:1.7.1 \\\n  ubuntu-container<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-d<\/code>: \u0627\u062c\u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a Detached.<\/li>\n\n\n\n<li><code>--name watchtower<\/code>: \u0646\u0627\u0645 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a.<\/li>\n\n\n\n<li><code>-v \/var\/run\/docker.sock:\/var\/run\/docker.sock<\/code>: \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 Watchtower \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0627 \u062f\u06cc\u0645\u0646 Docker \u0635\u062d\u0628\u062a \u06a9\u0646\u062f\u060c \u0627\u0644\u0632\u0627\u0645\u06cc \u0627\u0633\u062a.<\/li>\n\n\n\n<li><code>containrrr\/watchtower:1.7.1<\/code>: Image Pin-\u0634\u062f\u0647\u061b \u0627\u06af\u0631 \u062a\u06af \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u0634 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><code>ubuntu-container<\/code>: \u0641\u0642\u0637 \u0627\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Watch \u0645\u06cc\u0634\u0648\u062f\u061b \u0628\u0631\u0627\u06cc \u0646\u0638\u0627\u0631\u062a \u0628\u0631 \u0647\u0645\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062f\u0631-\u062d\u0627\u0644-\u0627\u062c\u0631\u0627 \u062d\u0630\u0641\u0634 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Docker \u0627\u06af\u0631 Image \u0645\u0648\u062c\u0648\u062f \u0646\u0628\u0627\u0634\u062f Pull \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f. \u0646\u0645\u0648\u0646\u0647 \u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Output\nUnable to find image 'containrrr\/watchtower:1.7.1' locally\n1.7.1: Pulling from containrrr\/watchtower\n...\nStatus: Downloaded newer image for containrrr\/watchtower:1.7.1\ncontainer_id<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u062f\u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631-\u062d\u0627\u0644-\u0627\u062c\u0631\u0627 \u0628\u0648\u062f\u0646 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Output\nCONTAINER ID   IMAGE                        COMMAND                  CREATED         STATUS         PORTS      NAMES\nwatchtower_id   containrrr\/watchtower:1.7.1   \"\/watchtower ubuntu-\u2026\"   N seconds ago   Up N seconds   8080\/tcp   watchtower\nubuntu_id   ubuntu                      \"sleep infinity\"         N seconds ago   Up N seconds              ubuntu-container<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc Image \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc \u0628\u0631\u0627\u06cc \u062a\u06af\u06cc \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u062a\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u062f Push \u0634\u0648\u062f\u060c Watchtower \u062f\u0631 Poll \u0628\u0639\u062f\u06cc \u062a\u0634\u062e\u06cc\u0635\u0634 \u062f\u0627\u062f\u0647\u060c Image \u0631\u0627 \u06a9\u0634\u06cc\u062f\u0647\u060c ubuntu-container \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0627 Image \u0628\u0647-\u0631\u0648\u0632 \u0634\u062f\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc\u06a9\u0646\u062f. \u0628\u0647\u200c\u0637\u0648\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u060c \u0628\u0627\u0632\u0647 Poll \u06cc\u0639\u0646\u06cc \u06f8\u06f6\u06f4\u06f0\u06f0 \u062b\u0627\u0646\u06cc\u0647 (\u06f2\u06f4 \u0633\u0627\u0639\u062a) \u0627\u0633\u062a\u2014\u0645\u06af\u0631 \u0628\u0627 <code>--interval<\/code> Override \u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0686\u06a9 \u06a9\u0631\u062f\u0646 \u0644\u0627\u06af\u0647\u0627\u060c \u0634\u0631\u0648\u0639 \u062f\u0631\u0633\u062a \u0648 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0631\u062f\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker logs watchtower<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0634\u0631\u0648\u0639 \u062a\u0645\u06cc\u0632\u060c \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0627\u06cc\u0646 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Output\ntime=\"2024-01-15T10:00:00Z\" level=info msg=\"Starting Watchtower and scheduling first run: 2024-01-15 10:00:00 +0000 UTC\"\ntime=\"2024-01-15T10:00:00Z\" level=info msg=\"Checking all containers (except explicitly disabled)\"\ntime=\"2024-01-15T10:00:00Z\" level=info msg=\"Found new containrrr\/watchtower:1.7.1 image (sha256:...)\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 <code>level=error msg=\"Could not connect to Docker daemon\"<\/code> \u062f\u06cc\u062f\u06cc\u062f\u060c Mount \u0633\u0648\u06a9\u062a \u0645\u0641\u0642\u0648\u062f \u06cc\u0627 \u0646\u0627\u062f\u0631\u0633\u062a \u0627\u0633\u062a. \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0645\u062a\u0648\u0642\u0641\u060c \u0641\u0644\u06af <code>-v<\/code> \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647:<\/strong> Watchtower \u0647\u0646\u06af\u0627\u0645 \u0627\u0639\u0645\u0627\u0644 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 Restart \u0645\u06cc\u06a9\u0646\u062f. \u062f\u0631 \u0645\u062d\u06cc\u0637\u0647\u0627\u06cc \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646\u060c \u0642\u0628\u0644 \u0627\u0632 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u060c \u0631\u0641\u062a\u0627\u0631 Restart \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u0647\u0627 \u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062a\u0648\u0642\u0641 \u0648 \u062d\u0630\u0641 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062f\u0645\u0648:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker stop watchtower ubuntu-container\ndocker rm watchtower ubuntu-container<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062e\u0637\u0627\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c \u0648 \u0645\u0639\u0646\u0627\u06cc\u0634\u0627\u0646<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cannot connect to the Docker daemon:<\/strong> Mount \u06cc\u0639\u0646\u06cc <code>-v \/var\/run\/docker.sock:\/var\/run\/docker.sock<\/code> \u0645\u0641\u0642\u0648\u062f \u06cc\u0627 \u0645\u0633\u06cc\u0631 \u0633\u0648\u06a9\u062a \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0633\u062a. \u0628\u0627 <code>ls -la \/var\/run\/docker.sock<\/code> \u0631\u0648\u06cc \u0647\u0627\u0633\u062a \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>Error response from daemon: manifest unknown:<\/strong> \u062a\u06af Image\u0627\u06cc \u06a9\u0647 Watchtower \u0686\u06a9 \u0645\u06cc\u06a9\u0646\u062f \u062f\u06cc\u06af\u0631 \u062f\u0631 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f. \u0646\u0627\u0645 \u0648 \u062a\u06af \u0631\u0627 \u0628\u0627 <code>docker inspect &lt;container_name> --format '{{.Config.Image}}'<\/code> \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>Error response from daemon: toomanyrequests:<\/strong> \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e Docker Hub \u0641\u0639\u0627\u0644 \u0634\u062f\u0647 (\u06f1\u06f0\u06f0 Pull \u0628\u062f\u0648\u0646-\u0627\u062d\u0631\u0627\u0632-\u0647\u0648\u06cc\u062a \u062f\u0631 \u06f6 \u0633\u0627\u0639\u062a \u0628\u0647\u200c\u0627\u0632\u0627\u06cc IP). Watchtower \u0631\u0627 \u0628\u0627 REPO_USER \u0648 REPO_PASS \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0633\u0642\u0641 \u0628\u0647 \u06f2\u06f0\u06f0 \u062f\u0631 \u06f6 \u0633\u0627\u0639\u062a \u0628\u0631\u0627\u06cc \u062d\u0633\u0627\u0628\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c \u0628\u0631\u0633\u062f.<\/li>\n\n\n\n<li><strong>\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Restart \u0645\u06cc\u0634\u0648\u062f \u0627\u0645\u0627 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0639\u062f \u0627\u0632 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a:<\/strong> Image \u0628\u0647-\u0631\u0648\u0632\u0634\u062f\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u067e\u0648\u0631\u062a\u060c Entrypoint \u06cc\u0627 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u062f. <code>docker logs &lt;container_name><\/code> \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc \u0631\u0627\u0647\u0627\u0646\u062f\u0627\u0632\u06cc \u0686\u06a9 \u06a9\u0646\u06cc\u062f. Watchtower Health Check \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u062f\u0647\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f2 \u2014 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0631\u062f\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0645\u0634\u062e\u0635 \u0628\u0627 Label\u0647\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0648 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0627\u06cc\u0646\u06a9\u0647 Watchtower \u06a9\u062f\u0627\u0645 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u0628\u0647\u0631\u0648\u0632 \u06a9\u0646\u062f: \u067e\u0627\u0633 \u062f\u0627\u062f\u0646 \u0646\u0627\u0645\u0647\u0627 (\u0645\u062b\u0644 \u06af\u0627\u0645 \u06f1) \u06cc\u0627 Label\u0647\u0627. \u0641\u06cc\u0644\u062a\u0631\u06cc\u0646\u06af Label-\u0645\u062d\u0648\u0631 \u0648\u0642\u062a\u06cc \u0645\u0641\u06cc\u062f \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0631\u06cc\u062f \u0648 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u062f\u0648\u0646 \u0641\u0647\u0631\u0633\u062a \u06a9\u0631\u062f\u0646 \u0646\u0627\u0645\u0647\u0627\u060c Opt-in \u06cc\u0627 Opt-out \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Opt-in: \u0641\u0642\u0637 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062f\u0627\u0631\u0627\u06cc Label \u06cc\u0639\u0646\u06cc enable<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Label \u06cc\u0639\u0646\u06cc <code>com.centurylinklabs.watchtower.enable=true<\/code> \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f Watchtower \u0628\u0647\u0631\u0648\u0632\u0634\u0627\u0646 \u06a9\u0646\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. Watchtower \u0631\u0627 \u0628\u0627 <code>--label-enable<\/code> \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0641\u0642\u0637 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062f\u0627\u0631\u0627\u06cc \u0627\u06cc\u0646 Label \u0631\u0627 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u06a9\u0647 Watchtower \u0628\u0647\u0631\u0648\u0632\u0634 \u0645\u06cc\u06a9\u0646\u062f (enable=true \u062f\u0627\u0631\u062f)\ndocker run -d \\\n  --name app-container \\\n  --label com.centurylinklabs.watchtower.enable=true \\\n  nginx:alpine\n\n# \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u06a9\u0647 Watchtower \u0646\u0627\u062f\u06cc\u062f\u0647 \u0645\u06cc\u06af\u06cc\u0631\u062f (Label \u0646\u062f\u0627\u0631\u062f)\ndocker run -d \\\n  --name other-container \\\n  nginx:alpine<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Watchtower \u0631\u0627 \u0628\u0627 \u0641\u06cc\u0644\u062a\u0631\u06cc\u0646\u06af Label-\u0645\u062d\u0648\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d \\\n  --name watchtower \\\n  -v \/var\/run\/docker.sock:\/var\/run\/docker.sock \\\n  containrrr\/watchtower:1.7.1 \\\n  --label-enable<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0642\u0637 app-container \u0628\u0631\u0627\u06cc \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u0634\u0648\u062f. Label \u0628\u0648\u062f\u0646 \u0631\u0648\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631\u0633\u062a \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker inspect app-container --format '{{json .Config.Labels}}'\n# Output\n{\"com.centurylinklabs.watchtower.enable\":\"true\"}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Opt-out: \u0647\u0645\u0647 \u0631\u0627 Watch \u06a9\u0646\u2014\u0628\u0647\u200c\u062c\u0632 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc disable<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u0632 <code>--label-enable<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06a9\u0646\u06cc\u062f\u060c Watchtower \u0628\u0647\u200c\u0637\u0648\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0647\u0645\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062f\u0631-\u062d\u0627\u0644-\u0627\u062c\u0631\u0627 \u0631\u0627 Watch \u0645\u06cc\u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0645\u0633\u062a\u062b\u0646\u06cc \u06a9\u0631\u062f\u0646 \u0645\u0648\u0627\u0631\u062f \u062e\u0627\u0635\u060c <code>com.centurylinklabs.watchtower.enable=false<\/code> \u0631\u0648\u06cc \u0622\u0646\u200c\u0647\u0627 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d \\\n  --name no-update-container \\\n  --label com.centurylinklabs.watchtower.enable=false \\\n  nginx:alpine<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Watchtower \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u0646\u0638\u0627\u0631\u062a-\u0628\u0631-\u0647\u0645\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d \\\n  --name watchtower \\\n  -v \/var\/run\/docker.sock:\/var\/run\/docker.sock \\\n  containrrr\/watchtower:1.7.1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0628\u0627 <code>enable=false<\/code> \u062f\u0631 \u0644\u0627\u06af\u0647\u0627\u2014to\u200c\u0639\u0646\u0648\u0627\u0646 Skipped\u2014\u062f\u0631 \u0647\u0631 \u062f\u0648\u0631 Poll \u0638\u0627\u0647\u0631 \u0645\u06cc\u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644\u0647\u0627\u06cc Docker Compose \u0628\u0631\u0627\u06cc Label\u0647\u0627<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0644\u06af\u0648\u06cc Opt-in:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  app:\n    image: nginx:alpine\n    container_name: app-container\n    labels:\n      - com.centurylinklabs.watchtower.enable=true\n\n  other:\n    image: nginx:alpine\n    container_name: other-container\n    # \u0628\u062f\u0648\u0646 Label \u2014 Watchtower \u0627\u06cc\u0646 \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0645\u06cc\u06af\u06cc\u0631\u062f\n\n  watchtower:\n    image: containrrr\/watchtower:1.7.1\n    container_name: watchtower\n    volumes:\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\n    command: --label-enable --interval 300<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0644\u06af\u0648\u06cc Opt-out:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  app:\n    image: nginx:alpine\n    container_name: app-container\n    # \u0628\u062f\u0648\u0646 Label \u2014 Watchtower \u0628\u0647\u0631\u0648\u0632\u0634 \u0645\u06cc\u06a9\u0646\u062f\n\n  no-update:\n    image: nginx:alpine\n    container_name: no-update-container\n    labels:\n      - com.centurylinklabs.watchtower.enable=false\n\n  watchtower:\n    image: containrrr\/watchtower:1.7.1\n    container_name: watchtower\n    volumes:\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\n    command: --interval 300<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f3 \u2014 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Watchtower \u0628\u0627 Docker Compose<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f Watchtower \u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u062a\u0627\u0646 \u0631\u0627 \u0627\u0632 \u0641\u0627\u06cc\u0644 Compose \u0645\u0646\u0641\u0631\u062f\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0645\u062b\u0627\u0644 \u0632\u06cc\u0631 \u0627\u0632 \u0627\u0644\u06af\u0648\u06cc Opt-in Label-\u0645\u062d\u0648\u0631 \u0648 \u0628\u0627\u0632\u0647 Poll \u06cc\u0639\u0646\u06cc \u06f3\u06f0-\u062b\u0627\u0646\u06cc\u0647\u0627\u06cc \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u0648 \u0641\u0627\u06cc\u0644 Compose \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/watchtower\ncd ~\/watchtower\nnano docker-compose.yml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062d\u062a\u0648\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 Paste \u06a9\u0646\u06cc\u062f (sammy \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645\u06a9\u0627\u0631\u0628\u0631\u06cc Docker Hub \u062e\u0648\u062f\u062a\u0627\u0646\u2014if \u0627\u0632 Image \u062e\u0635\u0648\u0635\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f\u2014\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  ubuntu:\n    image: ubuntu\n    container_name: ubuntu-container\n    command: sleep infinity\n    labels:\n      - com.centurylinklabs.watchtower.enable=true\n\n  custom-test:\n    image: sammy\/ubuntu-nodejs\n    container_name: test-container\n    command: sleep infinity\n    labels:\n      - com.centurylinklabs.watchtower.enable=true\n\n  watchtower:\n    image: containrrr\/watchtower:1.7.1\n    container_name: watchtower\n    volumes:\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\n    command: --interval 30 --label-enable --cleanup<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Stack \u0631\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0634\u0631\u0648\u0639 Watchtower \u0648 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0631\u062f\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062f\u0631\u0633\u062a \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs watchtower<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Output\nwatchtower  | time=\"...\" level=info msg=\"Starting Watchtower and scheduling first run: ...\"\nwatchtower  | time=\"...\" level=info msg=\"Checking containers with enable label\"\nwatchtower  | time=\"...\" level=info msg=\"ubuntu-container (ubuntu): up to date\"\nwatchtower  | time=\"...\" level=info msg=\"test-container (sammy\/ubuntu-nodejs): up to date\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 \u0641\u0627\u06cc\u0644 Compose\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d --force-recreate<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0644\u06af <code>--cleanup<\/code> \u0628\u0639\u062f \u0627\u0632 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0645\u0648\u0641\u0642\u060c Image\u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f4 \u2014 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc\u0647\u0627\u06cc \u062e\u0635\u0648\u0635\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Watchtower \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0627\u0632 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc\u0647\u0627\u06cc \u062e\u0635\u0648\u0635\u06cc Image Pull \u06a9\u0646\u062f. \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u06cc\u0627 \u06a9\u0627\u0646\u0641\u06cc\u06af Docker \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Docker Hub (\u0645\u062e\u0627\u0632\u0646 \u062e\u0635\u0648\u0635\u06cc)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>REPO_USER<\/code> \u0648 <code>REPO_PASS<\/code> (\u0646\u0627\u0645\u06a9\u0627\u0631\u0628\u0631\u06cc Docker Hub \u0648 \u0631\u0645\u0632\u0639\u0628\u0648\u0631 \u06cc\u0627 Access Token) \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  watchtower:\n    image: containrrr\/watchtower:1.7.1\n    container_name: watchtower\n    volumes:\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\n    environment:\n      REPO_USER: your_dockerhub_username\n      REPO_PASS: your_dockerhub_password_or_token\n    command: --interval 3600 --label-enable<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">GitHub Container Registry (GHCR)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0646\u0627\u0645\u06a9\u0627\u0631\u0628\u0631\u06cc GitHub \u0648 Personal Access Token \u06cc\u0639\u0646\u06cc PAT \u0628\u0627 <code>read:packages<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>environment:\n  REPO_USER: your_github_username\n  REPO_PASS: your_github_pat<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0647\u0634\u062f\u0627\u0631:<\/strong> \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u0647\u0627 \u0631\u0627 \u062f\u0631 docker-compose.yml\u0627\u06cc \u06a9\u0647 \u0628\u0647 Version Control \u06a9\u0627\u0645\u06cc\u062a \u0645\u06cc\u0634\u0648\u062f \u0647\u0627\u0631\u062f-\u06a9\u062f \u0646\u06a9\u0646\u06cc\u062f. \u0627\u0632 Docker Secrets \u06cc\u0627 \u0641\u0627\u06cc\u0644 .env\u0627\u06cc \u06a9\u0647 \u062f\u0631 .gitignore \u0641\u0647\u0631\u0633\u062a \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0648 \u0628\u0627 <code>env_file<\/code> \u0627\u0631\u062c\u0627\u0639\u0634 \u0628\u062f\u0647\u06cc\u062f.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0645\u062b\u0627\u0644 \u0628\u0627 \u0641\u0627\u06cc\u0644 .env:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>.env<\/code> (\u0628\u0647 .gitignore \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPO_USER=your_username\nREPO_PASS=your_secret<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>docker-compose.yml<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  watchtower:\n    image: containrrr\/watchtower:1.7.1\n    container_name: watchtower\n    volumes:\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\n    env_file:\n      - .env\n    command: --interval 3600 --label-enable<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f5 \u2014 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0639\u0644\u0627\u0646\u0647\u0627 (\u0627\u06cc\u0645\u06cc\u0644\u060c Slack\u060c Webhook)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Watchtower \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0647\u0646\u06af\u0627\u0645 \u0634\u0631\u0648\u0639\u060c \u06cc\u0627\u0641\u062a\u0646 \u0648 \u0627\u0639\u0645\u0627\u0644 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627 \u0627\u0639\u0644\u0627\u0646 \u0628\u0641\u0631\u0633\u062a\u062f. \u0627\u0632 shoutrrr \u0628\u0631\u0627\u06cc \u0686\u0646\u062f\u06cc\u0646 Backend \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u06cc\u0645\u06cc\u0644 (Gmail SMTP)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 Gmail \u0628\u0627 App Password \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f (Google \u0631\u0645\u0632\u0639\u0628\u0648\u0631 \u0633\u0627\u062f\u0647 \u0631\u0627 Deprecated \u06a9\u0631\u062f\u0647):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>environment:\n  WATCHTOWER_NOTIFICATIONS: email\n  WATCHTOWER_NOTIFICATION_EMAIL_FROM: your_gmail@gmail.com\n  WATCHTOWER_NOTIFICATION_EMAIL_TO: recipient@example.com\n  WATCHTOWER_NOTIFICATION_EMAIL_SERVER: smtp.gmail.com\n  WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT: 587\n  WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER: your_gmail@gmail.com\n  WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD: gmail_app_password<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Slack<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>environment:\n  WATCHTOWER_NOTIFICATIONS: slack\n  WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL: https:\/\/hooks.slack.com\/services\/YOUR\/WEBHOOK\/PATH<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Webhook \u0639\u0645\u0648\u0645\u06cc (shoutrrr)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>environment:\n  WATCHTOWER_NOTIFICATIONS: shoutrrr\n  WATCHTOWER_NOTIFICATION_URL: generic+https:\/\/your-webhook-endpoint.example.com\/notify<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0639\u0644\u0627\u0646 Watchtower \u0686\u0647 \u0634\u06a9\u0644\u06cc \u0627\u0633\u062a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Watchtower \u0628\u0647\u200c\u0627\u0632\u0627\u06cc \u0647\u0631 \u062f\u0648\u0631\u0650 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u2014which \u062d\u062f\u0627\u0642\u0644 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0647\u0631\u0648\u0632 \u0634\u062f\u0647\u2014\u06cc\u06a9\u06cc \u0627\u0639\u0644\u0627\u0646 \u0645\u06cc\u0641\u0631\u0633\u062a\u062f. \u067e\u06cc\u0627\u0645 Slack \u0634\u0628\u06cc\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Watchtower Updates on hostname\n\nUpdated containers:\n- ubuntu-container (ubuntu:latest): updated from sha256:abc123 to sha256:def456\n- test-container (sammy\/ubuntu-nodejs:latest): updated from sha256:111aaa to sha256:222bbb\n\nWatchtower v1.7.1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0647\u06cc\u0686 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u062f\u0631 \u062f\u0648\u0631 Poll \u0628\u0647\u0631\u0648\u0632 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0627\u0639\u0644\u0627\u0646\u06cc \u0641\u0631\u0633\u062a\u0627\u062f\u0647 \u0646\u0645\u06cc\u0634\u0648\u062f. \u0627\u06af\u0631 \u0628\u0639\u062f \u0627\u0632 Push\u0627\u06cc \u0627\u0639\u0644\u0627\u0646\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u06a9\u0631\u062f\u06cc\u062f\u060c <code>docker logs watchtower<\/code> \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc SMTP \u06cc\u0627 Webhook \u0686\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0641\u0642\u0637-\u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u0628\u0627 \u0627\u0639\u0644\u0627\u0646<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0641\u0642\u0637 \u0628\u0627\u062e\u0628\u0631 \u0634\u062f\u0646 \u0627\u0632 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f\u2014\u0628\u062f\u0648\u0646 \u0627\u0639\u0645\u0627\u0644\u2014to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>environment:\n  WATCHTOWER_MONITOR_ONLY: \"true\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627 \u0631\u0627 \u0648\u0642\u062a\u06cc \u062e\u0648\u062f\u062a\u0627\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u06a9\u0646\u06cc\u062f \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f6 \u2014 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 HTTP API \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Watchtower \u0628\u0631\u0627\u06cc \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627\u06cc On-Demand<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Watchtower \u0645\u06cc\u062a\u0648\u0627\u0646\u062f HTTP API\u0627\u06cc \u0627\u0641\u0634\u0627 \u06a9\u0646\u062f \u062a\u0627 \u0628\u0647\u062c\u0627\u06cc \u0627\u0646\u062a\u0638\u0627\u0631 \u0628\u0631\u0627\u06cc Poll \u0628\u0639\u062f\u06cc\u060c \u062f\u0648\u0631 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0631\u0627 On-Demand Trigger \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc CI\/CD \u06cc\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u0647\u0627 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">API \u0631\u0627 \u0628\u0627 <code>--http-api-update<\/code> \u0641\u0639\u0627\u0644 \u0648 \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a Token\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d \\\n  --name watchtower \\\n  -v \/var\/run\/docker.sock:\/var\/run\/docker.sock \\\n  -p 8080:8080 \\\n  -e WATCHTOWER_HTTP_API_UPDATE=true \\\n  -e WATCHTOWER_HTTP_API_TOKEN=your_secret_token \\\n  containrrr\/watchtower:1.7.1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0641\u0627\u06cc\u0644 Compose:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  watchtower:\n    image: containrrr\/watchtower:1.7.1\n    container_name: watchtower\n    volumes:\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\n    ports:\n      - \"127.0.0.1:8080:8080\"\n    environment:\n      WATCHTOWER_HTTP_API_UPDATE: \"true\"\n      WATCHTOWER_HTTP_API_TOKEN: your_secret_token\n    command: --label-enable<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647 \u0627\u0645\u0646\u06cc\u062a\u06cc:<\/strong> Bind \u06a9\u0631\u062f\u0646 \u0628\u0647 <code>127.0.0.1:8080<\/code> \u0628\u0647\u200c\u062c\u0627\u06cc <code>0.0.0.0:8080<\/code>\u060c API \u0631\u0627 \u0641\u0642\u0637 \u0628\u0647 Localhost \u0645\u062d\u062f\u0648\u062f \u0645\u06cc\u06a9\u0646\u062f\u2014which \u0627\u0645\u0646\u062a\u0631\u06cc\u0646 \u067e\u06cc\u0634\u0641\u0631\u0636 \u062f\u0631 \u0631\u0627\u0647\u0627\u0646\u062f\u0627\u0632\u06cc \u062a\u06a9-\u0647\u0627\u0633\u062a \u0627\u0633\u062a. \u0627\u06af\u0631 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0627\u0632 \u0647\u0627\u0633\u062a \u062f\u06cc\u06af\u0631\u06cc API \u0631\u0627 \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f\u060c \u067e\u0634\u062a Reverse Proxy \u0628\u0627 TLS \u0642\u0631\u0627\u0631\u0634 \u0628\u062f\u0647\u06cc\u062f.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0631\u0627 \u0628\u0627 curl Trigger \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -H \"Authorization: Bearer your_secret_token\" \\\n  http:&#47;&#47;localhost:8080\/v1\/update<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Output\n{\"updated\":&#91;\"ubuntu-container\"],\"fresh\":&#91;],\"failed\":&#91;],\"skipped\":&#91;]}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644: Trigger \u06a9\u0631\u062f\u0646 Watchtower \u0627\u0632 \u067e\u0627\u06cc\u067e\u200c\u0644\u0627\u06cc\u0646 CI\/CD \u0628\u0639\u062f \u0627\u0632 Push Image<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Workflow \u06cc\u0639\u0646\u06cc GitHub Actions\u060c \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0639\u062f \u0627\u0632 Push \u06a9\u0631\u062f\u0646 Image \u062c\u062f\u06cc\u062f\u060c \u0641\u0648\u0631\u0627\u064b Watchtower \u0631\u0627 Trigger \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># .github\/workflows\/deploy.yml (\u0641\u0642\u0637 \u0645\u0631\u062d\u0644\u0647 \u0645\u0631\u062a\u0628\u0637)\n- name: Trigger Watchtower update\n  run: |\n    curl -f -H \"Authorization: Bearer ${{ secrets.WATCHTOWER_TOKEN }}\" \\\n      https:&#47;&#47;your-host\/v1\/update<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>WATCHTOWER_TOKEN<\/code> \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 GitHub Actions Secret \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f. \u0641\u0644\u06af <code>-f<\/code> \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0648\u062f curl \u062f\u0631 \u067e\u0627\u0633\u062e HTTP \u062e\u0637\u0627 \u0628\u0627 Status \u063a\u06cc\u0631\u0635\u0641\u0631 \u062e\u0627\u0631\u062c \u0634\u0648\u062f\u2014\u067e\u0633 \u0627\u06af\u0631 Trigger \u0628\u0647 Watchtower \u0646\u0631\u0633\u062f\u060c \u0645\u0631\u062d\u0644\u0647 Workflow \u0628\u0647\u0634\u06a9\u0633\u062a-\u0645\u062d\u0633\u0648\u0633 \u0634\u06a9\u0633\u062a \u0645\u06cc\u062e\u0648\u0631\u062f.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647:<\/strong> HTTP API \u0631\u0648\u06cc \u067e\u0648\u0631\u062a \u06f8\u06f0\u06f8\u06f0 \u06af\u0648\u0634 \u0645\u06cc\u062f\u0647\u062f. \u0628\u062f\u0648\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Token) \u0648 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0627\u06cc\u0646 \u067e\u0648\u0631\u062a \u0631\u0627 \u0639\u0645\u0648\u0645\u06cc \u0627\u0641\u0634\u0627 \u0646\u06a9\u0646\u06cc\u062f\u061b \u0648\u06af\u0631\u0646\u0647 \u0647\u0631 \u06a9\u0633\u06cc \u06a9\u0647 \u0628\u0647 \u067e\u0648\u0631\u062a \u0628\u0631\u0633\u062f \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627 \u0631\u0627 Trigger \u06a9\u0646\u062f.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062c\u0639 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Watchtower<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u0641\u0644\u06af<\/th><th>\u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc<\/th><th>\u067e\u06cc\u0634\u200c\u0641\u0631\u0636<\/th><th>\u062a\u0648\u0636\u06cc\u062d<\/th><\/tr><\/thead><tbody><tr><td><code>--interval<\/code><\/td><td>WATCHTOWER_POLL_INTERVAL<\/td><td>86400<\/td><td>\u0628\u0627\u0632\u0647 Poll \u0628\u0647 \u062b\u0627\u0646\u06cc\u0647. \u0628\u0627 &#8211;schedule \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06cc\u0633\u062a.<\/td><\/tr><tr><td><code>--schedule<\/code><\/td><td>WATCHTOWER_SCHEDULE<\/td><td>&#8211;<\/td><td>\u0639\u0628\u0627\u0631\u062a Cron (\u06f6 \u0641\u06cc\u0644\u062f). \u0628\u0627 &#8211;interval \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06cc\u0633\u062a.<\/td><\/tr><tr><td><code>--cleanup<\/code><\/td><td>WATCHTOWER_CLEANUP<\/td><td>false<\/td><td>\u062d\u0630\u0641 Image\u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u0628\u0639\u062f \u0627\u0632 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc.<\/td><\/tr><tr><td><code>--label-enable<\/code><\/td><td>WATCHTOWER_LABEL_ENABLE<\/td><td>false<\/td><td>\u0641\u0642\u0637 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0628\u0627 enable=true.<\/td><\/tr><tr><td><code>--monitor-only<\/code><\/td><td>WATCHTOWER_MONITOR_ONLY<\/td><td>false<\/td><td>\u0641\u0642\u0637 \u0686\u06a9 \u0648 \u0627\u0639\u0644\u0627\u0646\u061b Restart \u0646\u06a9\u0646.<\/td><\/tr><tr><td><code>--run-once<\/code><\/td><td>WATCHTOWER_RUN_ONCE<\/td><td>false<\/td><td>\u06cc\u06a9 \u062f\u0648\u0631 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0648 \u062e\u0631\u0648\u062c.<\/td><\/tr><tr><td><code>--http-api-update<\/code><\/td><td>WATCHTOWER_HTTP_API_UPDATE<\/td><td>false<\/td><td>\u0641\u0639\u0627\u0644\u0633\u0627\u0632\u06cc HTTP API.<\/td><\/tr><tr><td><code>--http-api-periodic-polls<\/code><\/td><td>WATCHTOWER_HTTP_API_PERIODIC_POLLS<\/td><td>false<\/td><td>\u0647\u0645\u0631\u0627\u0647 API\u060c Poll \u062f\u0648\u0631\u0647\u200c\u0627\u06cc \u0631\u0627 \u0627\u062f\u0627\u0645\u0647 \u0628\u062f\u0647.<\/td><\/tr><tr><td>&#8211;<\/td><td>WATCHTOWER_HTTP_API_TOKEN<\/td><td>&#8211;<\/td><td>Token \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a API.<\/td><\/tr><tr><td>&#8211;<\/td><td>WATCHTOWER_NOTIFICATIONS<\/td><td>&#8211;<\/td><td>\u0646\u0648\u0639 \u0627\u0639\u0644\u0627\u0646: email\u060c slack \u0648 \u063a\u06cc\u0631\u0647.<\/td><\/tr><tr><td>&#8211;<\/td><td>REPO_USER<\/td><td>&#8211;<\/td><td>\u0646\u0627\u0645\u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc.<\/td><\/tr><tr><td>&#8211;<\/td><td>REPO_PASS<\/td><td>&#8211;<\/td><td>\u0631\u0645\u0632\u0639\u0628\u0648\u0631 \u06cc\u0627 Token.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0647\u0645 \u0641\u0644\u06af (\u0645\u062b\u0644\u0627\u064b \u062f\u0631 <code>command:<\/code>) \u0648 \u0647\u0645 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u0646\u062f\u060c <strong>\u0641\u0644\u06af \u062a\u0642\u062f\u0645 \u062f\u0627\u0631\u062f.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Watchtower \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u0647\u0627<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u0627\u0628\u0632\u0627\u0631<\/th><th>\u0631\u0648\u0634 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc<\/th><th>\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc<\/th><th>\u0627\u0639\u0644\u0627\u0646\u0647\u0627<\/th><th>\u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc<\/th><\/tr><\/thead><tbody><tr><td>Watchtower<\/td><td>Docker \u0647\u0627\u0633\u062a \u0631\u0627 Poll\u060c Pull \u0648 Restart<\/td><td>Docker Hub\u060c ECR\u060c GHCR<\/td><td>\u0627\u06cc\u0645\u06cc\u0644\u060c Slack\u060c Webhook<\/td><td>Homelab\u060c \u062a\u0648\u0633\u0639\u0647\u060c \u06a9\u0645-\u0628\u062d\u0631\u0627\u0646\u06cc\u062a\u06cc<\/td><\/tr><tr><td>What&#8217;s Up Docker (WUD)<\/td><td>\u0631\u062c\u06cc\u0633\u062a\u0631\u06cc\u0647\u0627 \u0631\u0627 Poll\u060c \u06af\u0632\u0627\u0631\u0634 \u06cc\u0627 Trigger<\/td><td>\u0686\u0646\u062f\u06cc\u0646 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc<\/td><td>Webhook\u060c Slack<\/td><td>\u062f\u06cc\u062f \u0648 \u06af\u0632\u0627\u0631\u0634\u06af\u0631\u06cc<\/td><\/tr><tr><td>Renovate<\/td><td>\u0645\u0628\u062a\u0646\u06cc-\u0628\u0631-PR\u060c \u062f\u0631 \u0645\u062e\u0632\u0646<\/td><td>\u0647\u0631 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc<\/td><td>GitHub\/GitLab<\/td><td>CI\/CD\u060c \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 \u0628\u0627 Rollback<\/td><\/tr><tr><td>Portainer<\/td><td>UI-\u0645\u062d\u0648\u0631\u060c \u062f\u0633\u062a\u06cc \u06cc\u0627 \u0632\u0645\u0627\u0646\u0628\u0646\u062f\u06cc<\/td><td>\u0647\u0631 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc<\/td><td>Built-in \u0648 Webhook<\/td><td>\u062a\u06cc\u0645\u0647\u0627\u06cc\u06cc \u06a9\u0647 UI \u0631\u0627 \u062a\u0631\u062c\u06cc\u062d \u0645\u06cc\u062f\u0647\u0646\u062f<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Watchtower:<\/strong> \u0631\u0648\u06cc \u0647\u0645\u0627\u0646 \u0647\u0627\u0633\u062a\u0650 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0627\u062c\u0631\u0627\u060c \u0627\u0632 \u0633\u0648\u06a9\u062a Docker \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0648 \u0648\u0642\u062a\u06cc Digest\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc\u062f\u0647\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 Restart \u0645\u06cc\u06a9\u0646\u062f. \u0628\u0627 Git \u06cc\u0627 CI\/CD \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0646\u0645\u06cc\u0634\u0648\u062f\u2014\u067e\u0633 Rollback \u06cc\u0627 \u0645\u0631\u062d\u0644\u0647 \u062a\u0627\u06cc\u06cc\u062f Built-in\u0627\u06cc \u0646\u062f\u0627\u0631\u062f.<\/li>\n\n\n\n<li><strong>Renovate:<\/strong> \u0628\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 Pull Request\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0631\u062c\u0627\u0639\u0627\u062a Image \u062f\u0631 \u0645\u062e\u0632\u0646\u062a\u0627\u0646 \u0631\u0627 \u0628\u0647\u0631\u0648\u0632 \u0645\u06cc\u06a9\u0646\u0646\u062f \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u062f. \u067e\u0627\u06cc\u067e\u200c\u0644\u0627\u06cc\u0646 \u0634\u0645\u0627 \u0628\u0639\u062f \u0627\u0632 Merge \u0628\u06cc\u0644\u062f \u0648 \u062f\u06cc\u067e\u0644\u0648\u06cc \u0645\u06cc\u06a9\u0646\u062f\u2014\u06a9\u0647 \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc\u060c Rollback \u0627\u0632 \u0637\u0631\u06cc\u0642 Git \u0648 \u06a9\u0646\u062a\u0631\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><strong>Portainer:<\/strong> Web UI \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u062f \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0627\u0632 UI \u06cc\u0627 \u0632\u0645\u0627\u0646\u0628\u0646\u062f\u06cc-\u0634\u062f\u0647 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f1. \u0622\u06cc\u0627 Watchtower \u062f\u0627\u06a9\u0631 Deprecated \u0634\u062f\u0647\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062e\u0632\u0646 Upstream \u06cc\u0639\u0646\u06cc containrrr\/watchtower \u062f\u0631 \u062f\u0633\u0627\u0645\u0628\u0631 \u06f2\u06f0\u06f2\u06f5 Archive \u0634\u062f \u0648 \u0641\u0642\u0637-\u062e\u0648\u0627\u0646\u062f\u0646\u06cc \u0627\u0633\u062a. \u067e\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644\u0627\u0646\u0647 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0646\u0645\u06cc\u0634\u0648\u062f. Image Docker \u0647\u0645\u0686\u0646\u0627\u0646 \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a \u0648 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0632\u06cc\u0627\u062f\u06cc \u0647\u0646\u0648\u0632 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0627\u0631\u0647\u0627\u06cc \u063a\u06cc\u0631-\u0628\u062d\u0631\u0627\u0646\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u0646\u062f. \u0628\u0631\u0627\u06cc \u062f\u06cc\u067e\u0644\u0648\u06cc\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u06cc\u0627 \u0628\u062d\u0631\u0627\u0646\u06cc-\u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646\u06cc\u060c \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u0647\u0627\u06cc \u0641\u0639\u0627\u0644\u0627\u0646\u0647-\u0646\u06af\u0647\u062f\u0627\u0631\u06cc\u200c\u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f2. \u0628\u0627 \u067e\u0631\u0648\u0698\u0647 Watchtower Docker \u0686\u0647 \u0634\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u06af\u0647\u062f\u0627\u0631\u0646\u062f\u06af\u0627\u0646 \u0645\u062e\u0632\u0646 GitHub \u0631\u0627 Archive \u06a9\u0631\u062f\u0646\u062f\u061b Release \u062c\u062f\u06cc\u062f\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0631\u06cc\u0632\u06cc \u0646\u0634\u062f\u0647. \u0622\u062e\u0631\u06cc\u0646 \u062a\u06af \u067e\u0627\u06cc\u062f\u0627\u0631 v1.7.1 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f3. Watchtower \u0686\u06af\u0648\u0646\u0647 \u0628\u0627 Docker \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u06a9\u0647 \u0633\u0648\u06a9\u062a Docker \u0647\u0627\u0633\u062a \u0631\u0627 Mount \u0645\u06cc\u06a9\u0646\u062f. \u0628\u0647\u200c\u0637\u0648\u0631 \u062f\u0648\u0631\u0647\u200c\u0627\u06cc \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc\u0647\u0627\u06cc Image \u0631\u0627 \u0628\u0631\u0627\u06cc Digest \u062a\u06af Image\u0650 \u0647\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0650 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u0634\u062f\u0647 \u06a9\u0648\u0626\u0631\u06cc \u0645\u06cc\u06a9\u0646\u062f. \u0627\u06af\u0631 Digest \u0631\u06cc\u0645\u0648\u062a \u0628\u0627 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u06a9\u0627\u0646\u062a\u06cc\u0631 \u062f\u0631-\u062d\u0627\u0644-\u0627\u062c\u0631\u0627 \u062a\u0641\u0627\u0648\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c Image \u062c\u062f\u06cc\u062f \u0631\u0627 Pull \u06a9\u0631\u062f\u0647\u060c \u06a9\u0627\u0646\u062a\u06cc\u0631 \u0631\u0627 Stop \u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 Image \u0628\u0647-\u0631\u0648\u0632 \u0634\u062f\u0647 Start \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f4. \u0622\u06cc\u0627 Watchtower \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0627\u0632 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc\u0647\u0627\u06cc \u062e\u0635\u0648\u0635\u06cc \u0628\u0647\u0631\u0648\u0632 \u06a9\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0644\u0647. \u0628\u0631\u0627\u06cc Docker Hub \u0648 GHCR \u0627\u0632 REPO_USER \u0648 REPO_PASS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u0647\u0627 \u0631\u0627 \u0647\u0631\u06af\u0632 \u062f\u0631 \u0641\u0627\u06cc\u0644\u0647\u0627\u06cc Compose \u062f\u0631 Version Control \u0630\u062e\u06cc\u0631\u0647 \u0646\u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f5. \u0686\u0637\u0648\u0631 \u062c\u0644\u0648\u06cc \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0645\u0634\u062e\u0635\u06cc \u0631\u0627 \u0628\u06af\u06cc\u0631\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0641\u0647\u0631\u0633\u062a \u0646\u0627\u0645 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u0628\u0647 Watchtower \u067e\u0627\u0633 \u0628\u062f\u0647\u06cc\u062f\u060c \u0641\u0642\u0637 \u0647\u0645\u0627\u0646\u200c\u0647\u0627 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u0645\u06cc\u0634\u0648\u0646\u062f. \u0628\u0631\u0627\u06cc \u0645\u0633\u062a\u062b\u0646\u06cc \u06a9\u0631\u062f\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0631 \u0648\u0642\u062a\u06cc Watchtower \u0647\u0645\u0647 \u0631\u0627 Watch \u0645\u06cc\u06a9\u0646\u062f\u060c Label \u06cc\u0639\u0646\u06cc <code>com.centurylinklabs.watchtower.enable=false<\/code> \u0628\u0647 \u0622\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0631 \u0628\u062f\u0647\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f6. \u0622\u06cc\u0627 \u0627\u062c\u0631\u0627\u06cc Watchtower \u062f\u0631 \u0645\u062d\u06cc\u0637 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 \u0627\u0645\u0646 \u0627\u0633\u062a\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Watchtower \u0647\u0646\u06af\u0627\u0645 \u0627\u0639\u0645\u0627\u0644 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 Restart \u0645\u06cc\u06a9\u0646\u062f\u2014which \u0642\u0637\u0639\u06cc \u06a9\u0648\u062a\u0627\u0647\u06cc \u0628\u0647\u200c\u0627\u0632\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u06a9\u0646\u062f. Health Check \u06cc\u0627 Rollback \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u062f\u0647\u062f. \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0628\u0627\u0631\u0647\u0627\u06cc \u06a9\u0645-\u0628\u062d\u0631\u0627\u0646\u06cc\u062a\u06cc\u2014which \u062f\u0631 \u0622\u0646\u200c\u0647\u0627 Restart \u062e\u0648\u062f\u06a9\u0627\u0631 \u0642\u0627\u0628\u0644-\u0642\u0628\u0648\u0644 \u0627\u0633\u062a\u2014\u062f\u0631 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Watchtower \u0631\u0648\u0634 \u0633\u0627\u062f\u0647 \u0648 \u0645\u0624\u062b\u0631\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627\u06cc Image \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Docker \u062f\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u062f\u2014to\u200c\u0647\u0645\u0631\u0627\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c\u060c \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u062e\u0635\u0648\u0635\u06cc \u0648 \u06af\u0632\u06cc\u0646\u0647\u0647\u0627\u06cc \u0627\u0639\u0644\u0627\u0646 \u0627\u0646\u0639\u0637\u0627\u0641\u067e\u0630\u06cc\u0631. \u0628\u0631\u0627\u06cc Homelab\u0647\u0627\u060c \u0645\u062d\u06cc\u0637\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0648 \u0628\u0627\u0631\u0647\u0627\u06cc\u06cc\u2014which \u062f\u0631 \u0622\u0646\u200c\u0647\u0627 \u0628\u0647\u062d\u062f\u0627\u0642\u0644\u0631\u0633\u0627\u0646\u062f\u0646 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0627\u0648\u0644\u0648\u06cc\u062a \u0648 Restart\u0647\u0627\u06cc \u0627\u062a\u0641\u0627\u0642\u06cc \u0642\u0627\u0628\u0644-\u0642\u0628\u0648\u0644 \u0627\u0633\u062a\u2014\u0627\u06cc\u062f\u0647\u0622\u0644 \u0627\u0633\u062a. \u0647\u0631\u0686\u0646\u062f \u067e\u0631\u0648\u0698\u0647 \u062f\u06cc\u06af\u0631 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0646\u0645\u06cc\u0634\u0648\u062f\u060c \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0632\u06cc\u0627\u062f\u06cc \u062e\u0648\u0628 \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u062f\u2014\u0641\u0642\u0637 \u0645\u0631\u0627\u0642\u0628 \u0628\u062f\u0647-\u0628\u0633\u062a\u0627\u0646\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0628\u0627\u0634\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u06cc\u067e\u0644\u0648\u06cc\u0647\u0627\u06cc \u0628\u0632\u0631\u06af\u062a\u0631 \u06cc\u0627 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646\u06cc\u2014which \u0628\u062f\u0648\u0646-\u0642\u0637\u0639\u06cc\u060c \u06a9\u0646\u062a\u0631\u0644 \u062a\u063a\u06cc\u06cc\u0631\u060c Rollback \u06cc\u0627 \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u0628\u0627 CI\/CD \u0631\u0627 \u0645\u06cc\u0637\u0644\u0628\u0646\u062f\u2014\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 Renovate \u06cc\u0627 \u067e\u0627\u06cc\u067e\u200c\u0644\u0627\u06cc\u0646\u0647\u0627\u06cc \u062f\u06cc\u067e\u0644\u0648\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f. \u0647\u0631 \u0627\u0646\u062a\u062e\u0627\u0628\u06cc\u060c \u0647\u0645\u06cc\u0634\u0647 \u0627\u0633\u0631\u0627\u0631\u062a\u0627\u0646 \u0631\u0627 \u0645\u062d\u0627\u0641\u0638\u062a \u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u062a\u0627\u0646 \u0631\u0627 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0645\u062d\u06cc\u0637\u062a\u0627\u0646 \u0627\u0645\u0646 \u0648 \u0628\u0647-\u0631\u0648\u0632 \u0628\u0645\u0627\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 Watchtower \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc Docker \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0631\u062f\u0647 \u0648 \u0648\u0642\u062a\u06cc Image\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc \u062f\u0631 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc\u0647\u0627\u06cc\u0634\u0627\u0646 \u0645\u0648\u062c\u0648\u062f \u0628\u0627\u0634\u062f\u060c \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0634\u0627\u0646 \u0645\u06cc\u06a9\u0646\u062f. \u0628\u0647 \u0633\u0648\u06a9\u062a Docker \u0645\u062a\u0635\u0644 \u0634\u062f\u0647\u060c \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc\u0647\u0627\u06cc Image \u0631\u0627 \u062f\u0631 \u0628\u0627\u0632\u0647\u0647\u0627\u06cc \u0642\u0627\u0628\u0644-\u062a\u0646\u0638\u06cc\u0645 Poll \u06a9\u0631\u062f\u0647\u061b \u0648 \u0648\u0642\u062a\u06cc \u062a\u063a\u06cc\u06cc\u0631 Digest\u0627\u06cc \u0631\u0627 \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc\u062f\u0647\u062f\u060c Image \u062c\u062f\u06cc\u062f \u0631\u0627 \u0645\u06cc\u06a9\u0634\u062f (Pull)\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 &hellip;<\/p>\n","protected":false},"author":9,"featured_media":7095,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[142,131],"tags":[],"class_list":["post-7094","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-142","category-131"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7094","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=7094"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7094\/revisions"}],"predecessor-version":[{"id":7096,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7094\/revisions\/7096"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/7095"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=7094"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=7094"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=7094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}