{"id":4934,"date":"2026-08-10T22:33:51","date_gmt":"2026-08-10T22:33:51","guid":{"rendered":"https:\/\/netguide.io\/linux\/docker-restart-policy-container-automatisch-starten\/"},"modified":"2026-08-10T23:46:31","modified_gmt":"2026-08-10T23:46:31","slug":"docker-restart-policy-container-automatisch-starten","status":"publish","type":"post","link":"https:\/\/netguide.io\/linux\/de\/docker-restart-policy-container-automatisch-starten\/","title":{"rendered":"Docker Restart-Policy: Container automatisch neu starten"},"content":{"rendered":"<script type=\"text\/plain\" data-tcf=\"waiting-for-consent\" data-id=\"4797\" data-bid=\"2\" data-placement=\"4798\">PGRpdiBpZD0ibmV0Z3VpZGVhLTMwNTkxNjI4MTYiIGNsYXNzPSJuZXRndWlkZWEtYmVmb3JlLWNvbnRlbnQgbmV0Z3VpZGVhLWVudGl0eS1wbGFjZW1lbnQiPjxkaXYgY2xhc3M9Im5ldGd1aWRlYS1hZGxhYmVsIj5BZHZlcnRpc2VtZW50czwvZGl2PjxzY3JpcHQgYXN5bmMgc3JjPSIvL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9qcy9hZHNieWdvb2dsZS5qcz9jbGllbnQ9Y2EtcHViLTYyNTg1NTYyNTcyNDU5OTgiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PjxpbnMgY2xhc3M9ImFkc2J5Z29vZ2xlIiBzdHlsZT0iZGlzcGxheTpibG9jazsiIGRhdGEtYWQtY2xpZW50PSJjYS1wdWItNjI1ODU1NjI1NzI0NTk5OCIgCmRhdGEtYWQtc2xvdD0iMzQ5NDExNTM0MiIgCmRhdGEtYWQtZm9ybWF0PSJhdXRvIj48L2lucz4KPHNjcmlwdD4gCihhZHNieWdvb2dsZSA9IHdpbmRvdy5hZHNieWdvb2dsZSB8fCBbXSkucHVzaCh7fSk7IAo8L3NjcmlwdD4KPC9kaXY+<\/script>\n<p class=\"wp-block-paragraph\">Nach einem Server-Neustart sind alle Container weg? Oder ein abgest\u00fcrzter Dienst bleibt einfach liegen? Dann fehlt die passende Restart-Policy. In dieser Anleitung erkl\u00e4ren wir die <strong>Docker Restart-Policies<\/strong> \u2013 <code>no<\/code>, <code>on-failure<\/code>, <code>always<\/code> und <code>unless-stopped<\/code> \u2013 und zeigen dir, wie deine Container nach Absturz oder Reboot automatisch wieder anlaufen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Startet dein Server neu, sollen wichtige Container von selbst wieder hochfahren \u2013 ohne dass du dich per SSH einloggen musst. Genau das regelt die <strong>Docker Restart-Policy<\/strong>. Sie legt fest, ob und wann ein Container automatisch neu gestartet wird: nach einem Absturz, nach einem Reboot oder gar nicht. In dieser Anleitung lernst du die vier Policies kennen, w\u00e4hlst die richtige f\u00fcr deinen Anwendungsfall und vermeidest die typische Falle der endlosen Neustart-Schleife.<\/p>\n\n\n\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-1ffd1ad5      \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tInhaltsverzeichnis\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#was-ist-eine-restart-policy\" class=\"uagb-toc-link__trigger\">Was ist eine Restart-Policy?<\/a><li class=\"uagb-toc__list\"><a href=\"#die-vier-policies-im-vergleich\" class=\"uagb-toc-link__trigger\">Die vier Policies im Vergleich<\/a><li class=\"uagb-toc__list\"><a href=\"#restart-policy-bei-docker-run-setzen\" class=\"uagb-toc-link__trigger\">Restart-Policy bei docker run setzen<\/a><li class=\"uagb-toc__list\"><a href=\"#restart-policy-in-docker-composeyml\" class=\"uagb-toc-link__trigger\">Restart-Policy in docker-compose.yml<\/a><li class=\"uagb-toc__list\"><a href=\"#policy-eines-laufenden-containers-\u00e4ndern\" class=\"uagb-toc-link__trigger\">Policy eines laufenden Containers \u00e4ndern<\/a><li class=\"uagb-toc__list\"><a href=\"#restart-policy-vs-watchtower\" class=\"uagb-toc-link__trigger\">Restart-Policy vs. Watchtower<\/a><li class=\"uagb-toc__list\"><a href=\"#die-vier-policies-im-\u00fcberblick\" class=\"uagb-toc-link__trigger\">Die vier Policies im \u00dcberblick<\/a><li class=\"uagb-toc__list\"><a href=\"#always-oder-unless-stopped\" class=\"uagb-toc-link__trigger\">always oder unless-stopped?<\/a><li class=\"uagb-toc__list\"><a href=\"#neustart-schleifen-erkennen-und-stoppen\" class=\"uagb-toc-link__trigger\">Neustart-Schleifen erkennen und stoppen<\/a><li class=\"uagb-toc__list\"><a href=\"#h\u00e4ufige-fragen\" class=\"uagb-toc-link__trigger\">H\u00e4ufige Fragen<\/a><li class=\"uagb-toc__list\"><a href=\"#kann-ich-die-policy-eines-laufenden-containers-\u00e4ndern\" class=\"uagb-toc-link__trigger\">Kann ich die Policy eines laufenden Containers \u00e4ndern?<\/a><li class=\"uagb-toc__list\"><a href=\"#warum-startet-mein-container-nach-dem-reboot-nicht\" class=\"uagb-toc-link__trigger\">Warum startet mein Container nach dem Reboot nicht?<\/a><li class=\"uagb-toc__list\"><a href=\"#welche-policy-nutze-ich-in-docker-composeyml\" class=\"uagb-toc-link__trigger\">Welche Policy nutze ich in docker-compose.yml?<\/a><li class=\"uagb-toc__list\"><a href=\"#fazit\" class=\"uagb-toc-link__trigger\">Fazit<\/a><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was ist eine Restart-Policy?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Restart-Policy legt fest, <strong>ob und wann Docker einen Container automatisch neu startet<\/strong>. Ohne sie bleibt ein Container, der abst\u00fcrzt oder beim Server-Reboot stoppt, einfach beendet. F\u00fcr dauerhaft laufende Dienste \u2013 Webserver, Datenbanken, <a href=\"https:\/\/netguide.io\/linux\/de\/portainer-installieren-docker-verwalten\/\">Portainer<\/a> \u2013 ist eine Restart-Policy daher Pflicht.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Die vier Policies im Vergleich<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Policy<\/th><th>Verhalten<\/th><\/tr><\/thead><tbody><tr><td><code>no<\/code><\/td><td>Standard. Container wird nie automatisch neu gestartet.<\/td><\/tr><tr><td><code>on-failure<\/code><\/td><td>Neustart nur, wenn der Container mit Fehler (Exit-Code \u2260 0) endet. Optional mit Versuchslimit.<\/td><\/tr><tr><td><code>always<\/code><\/td><td>Immer neu starten \u2013 auch nach einem Docker-\/Server-Neustart. Selbst nach manuellem Stopp startet er beim Docker-Start wieder.<\/td><\/tr><tr><td><code>unless-stopped<\/code><\/td><td>Wie <code>always<\/code>, aber ein manuell gestoppter Container bleibt nach einem Docker-Neustart gestoppt.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr die meisten Selfhosting-Dienste ist <strong><code>unless-stopped<\/code><\/strong> die beste Wahl: Die Container \u00fcberleben Reboots, respektieren aber ein bewusstes manuelles Stoppen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Restart-Policy bei docker run setzen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Beim Start eines Containers gibst du die Policy \u00fcber <code>--restart<\/code> an:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>docker run -d --restart unless-stopped --name webserver nginx:latest<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #9ECBFF\"> run<\/span><span style=\"color: #79B8FF\"> -d<\/span><span style=\"color: #79B8FF\"> --restart<\/span><span style=\"color: #9ECBFF\"> unless-stopped<\/span><span style=\"color: #79B8FF\"> --name<\/span><span style=\"color: #9ECBFF\"> webserver<\/span><span style=\"color: #9ECBFF\"> nginx:latest<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Mit <code>on-failure<\/code> kannst du zus\u00e4tzlich die maximale Zahl der Versuche begrenzen:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>docker run -d --restart on-failure:5 --name job meine-app:latest<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #9ECBFF\"> run<\/span><span style=\"color: #79B8FF\"> -d<\/span><span style=\"color: #79B8FF\"> --restart<\/span><span style=\"color: #9ECBFF\"> on-failure:5<\/span><span style=\"color: #79B8FF\"> --name<\/span><span style=\"color: #9ECBFF\"> job<\/span><span style=\"color: #9ECBFF\"> meine-app:latest<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Restart-Policy in docker-compose.yml<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In Compose setzt du die Policy pro Dienst \u00fcber den Schl\u00fcssel <code>restart<\/code>. Das ist der Normalfall im Alltag:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>services:\n  web:\n    image: nginx:latest\n    restart: unless-stopped\n  datenbank:\n    image: postgres:16\n    restart: unless-stopped<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #85E89D\">services<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">  web<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    image<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">nginx:latest<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    restart<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">unless-stopped<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">  datenbank<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    image<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">postgres:16<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    restart<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">unless-stopped<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Die Grundlagen dazu findest du in <a href=\"https:\/\/netguide.io\/linux\/de\/docker-compose-installieren-ubuntu-debian\/\">Docker Compose installieren<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Policy eines laufenden Containers \u00e4ndern<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Du musst einen Container nicht neu erstellen, um die Policy anzupassen. Das geht im laufenden Betrieb mit <code>docker update<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>docker update --restart unless-stopped mein-container<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #9ECBFF\"> update<\/span><span style=\"color: #79B8FF\"> --restart<\/span><span style=\"color: #9ECBFF\"> unless-stopped<\/span><span style=\"color: #9ECBFF\"> mein-container<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Welche Policy aktiv ist, verr\u00e4t dir ein Blick in die Container-Details:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>docker inspect -f \"{{.HostConfig.RestartPolicy.Name}}\" mein-container<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #9ECBFF\"> inspect<\/span><span style=\"color: #79B8FF\"> -f<\/span><span style=\"color: #9ECBFF\"> \"{{.HostConfig.RestartPolicy.Name}}\"<\/span><span style=\"color: #9ECBFF\"> mein-container<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Restart-Policy vs. Watchtower<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein h\u00e4ufiges Missverst\u00e4ndnis: Eine Restart-Policy sorgt daf\u00fcr, dass ein Container <strong>l\u00e4uft<\/strong> \u2013 sie aktualisiert ihn aber nicht. F\u00fcr automatische <strong>Updates<\/strong> ist <a href=\"https:\/\/netguide.io\/linux\/de\/docker-container-automatisch-aktualisieren-watchtower\/\">Watchtower<\/a> zust\u00e4ndig. Beides erg\u00e4nzt sich: Die Policy h\u00e4lt den Dienst am Leben, Watchtower h\u00e4lt ihn aktuell. Bleibt ein Container trotz Policy in einer Neustart-Schleife h\u00e4ngen, hilft ein Blick in die <a href=\"https:\/\/netguide.io\/linux\/de\/docker-logs-anzeigen-verwalten\/\">Container-Logs<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Die vier Policies im \u00dcberblick<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Docker bietet vier Restart-Policies, die sich im Verhalten bei Absturz und Reboot unterscheiden. F\u00fcr dauerhaft laufende Dienste ist <code>unless-stopped<\/code> meist die beste Wahl, weil sie nach einem Reboot startet, ein bewusst gestoppter Container aber gestoppt bleibt.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Policy<\/th><th>Nach Absturz<\/th><th>Nach Reboot<\/th><\/tr><\/thead><tbody><tr><td><code>no<\/code><\/td><td>Nein<\/td><td>Nein<\/td><\/tr><tr><td><code>on-failure<\/code><\/td><td>Nur bei Fehlercode<\/td><td>Nein<\/td><\/tr><tr><td><code>always<\/code><\/td><td>Ja<\/td><td>Ja<\/td><\/tr><tr><td><code>unless-stopped<\/code><\/td><td>Ja<\/td><td>Nur wenn nicht manuell gestoppt<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">always oder unless-stopped?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der Unterschied ist subtil, aber wichtig. Beide starten einen abgest\u00fcrzten Container neu. Der Unterschied zeigt sich nach einem Reboot: <code>always<\/code> startet den Container selbst dann, wenn du ihn vorher bewusst mit <code>docker stop<\/code> angehalten hast. <code>unless-stopped<\/code> respektiert deinen manuellen Stopp und l\u00e4sst ihn aus. F\u00fcr die meisten Selfhosting-Dienste ist <code>unless-stopped<\/code> daher die intuitivere Wahl.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beachte au\u00dferdem: Die Restart-Policy greift nur, wenn der Docker-Daemon selbst l\u00e4uft. Damit Container nach einem Server-Neustart hochfahren, muss der Docker-Dienst \u00fcber systemd aktiviert sein (<code>sudo systemctl enable docker<\/code>). Fehlt dieser Schritt, wunderst du dich nach jedem Reboot, warum trotz <code>always<\/code> nichts startet \u2013 die Policy war korrekt, nur der Daemon wurde nie automatisch gestartet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein weiterer Punkt betrifft die Startreihenfolge abh\u00e4ngiger Dienste. Braucht dein Anwendungscontainer eine Datenbank, verhindert eine reine Restart-Policy nicht, dass er vor der Datenbank hochf\u00e4hrt und dabei zun\u00e4chst scheitert. Hier hilft in Compose die Kombination aus <code>depends_on<\/code> und einem Healthcheck, damit Docker erst weitermacht, wenn die Abh\u00e4ngigkeit wirklich bereit ist. Die Restart-Policy f\u00e4ngt dann nur noch echte Ausnahmef\u00e4lle ab, statt einen strukturellen Fehler zu kaschieren.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Neustart-Schleifen erkennen und stoppen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Eine falsch konfigurierte Anwendung, die beim Start sofort abst\u00fcrzt, kann in eine endlose Neustart-Schleife geraten und dabei CPU-Last erzeugen. Docker federt das mit einem zunehmenden Backoff ab, verhindert das Grundproblem aber nicht. Erkennen kannst du es in der Statusspalte von <code>docker ps<\/code> (\u201eRestarting\u201c) oder im Feld <code>RestartCount<\/code>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pr\u00fcfe die Ursache in den Logs mit <code>docker logs<\/code>, bevor du blind neu startest.<\/li>\n\n<li>Nutze <code>on-failure:5<\/code>, um die Zahl der Versuche zu begrenzen.<\/li>\n\n<li>Stoppe eine laufende Schleife mit <code>docker update --restart=no container<\/code>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">H\u00e4ufige Fragen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e4ufige Fragen rund um die Docker Restart-Policy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kann ich die Policy eines laufenden Containers \u00e4ndern?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ja, mit <code>docker update --restart=unless-stopped container<\/code> passt du die Policy an, ohne den Container neu erstellen zu m\u00fcssen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Warum startet mein Container nach dem Reboot nicht?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e4ufig ist der Docker-Dienst selbst nicht f\u00fcr den Autostart aktiviert. Pr\u00fcfe das mit <code>systemctl is-enabled docker<\/code> und aktiviere ihn bei Bedarf.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Welche Policy nutze ich in docker-compose.yml?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Setze <code>restart: unless-stopped<\/code> unter dem jeweiligen Dienst. So gilt die Policy f\u00fcr alle mit dem Stack gestarteten Container.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Fazit<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Mit der richtigen Restart-Policy laufen deine Container zuverl\u00e4ssig \u2013 auch nach Abst\u00fcrzen und Reboots. Merke dir <strong><code>unless-stopped<\/code><\/strong> als Standard f\u00fcr dauerhafte Dienste und <code>on-failure<\/code> f\u00fcr Aufgaben, die nur im Fehlerfall neu starten sollen. Kombiniert mit Watchtower und sauberen Logs hast du eine stabile, wartungsarme Docker-Umgebung. Weitere Stolperfallen behandelt <a href=\"https:\/\/netguide.io\/linux\/de\/die-10-haeufigsten-docker-fehler-mit-loesungen\/\">Die 10 h\u00e4ufigsten Docker-Fehler<\/a>.<\/p>\n<script type=\"text\/plain\" data-tcf=\"waiting-for-consent\" data-id=\"4799\" data-bid=\"2\" data-placement=\"4800\">PGRpdiBpZD0ibmV0Z3VpZGVhLTQyMzI0NTY4NSIgY2xhc3M9Im5ldGd1aWRlYS1hZnRlci1jb250ZW50IG5ldGd1aWRlYS1lbnRpdHktcGxhY2VtZW50Ij48ZGl2IGNsYXNzPSJuZXRndWlkZWEtYWRsYWJlbCI+QWR2ZXJ0aXNlbWVudHM8L2Rpdj48c2NyaXB0IGFzeW5jIHNyYz0iLy9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanM\/Y2xpZW50PWNhLXB1Yi02MjU4NTU2MjU3MjQ1OTk4IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD48aW5zIGNsYXNzPSJhZHNieWdvb2dsZSIgc3R5bGU9ImRpc3BsYXk6YmxvY2s7IiBkYXRhLWFkLWNsaWVudD0iY2EtcHViLTYyNTg1NTYyNTcyNDU5OTgiIApkYXRhLWFkLXNsb3Q9IjQ1NTk3ODUwMDIiIApkYXRhLWFkLWZvcm1hdD0iYXV0byI+PC9pbnM+CjxzY3JpcHQ+IAooYWRzYnlnb29nbGUgPSB3aW5kb3cuYWRzYnlnb29nbGUgfHwgW10pLnB1c2goe30pOyAKPC9zY3JpcHQ+CjwvZGl2Pg==<\/script>","protected":false},"excerpt":{"rendered":"<p>Docker Restart-Policies erkl\u00e4rt: no, on-failure, always und unless-stopped im Vergleich \u2013 so starten deine Container nach Absturz und Reboot automatisch neu.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[231,9],"tags":[],"class_list":["post-4934","post","type-post","status-publish","format-standard","hentry","category-docker","category-linux"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Tobias Pries","author_link":"https:\/\/netguide.io\/linux\/author\/tobias-pries\/"},"uagb_comment_info":0,"uagb_excerpt":"Docker Restart-Policies erkl\u00e4rt: no, on-failure, always und unless-stopped im Vergleich \u2013 so starten deine Container nach Absturz und Reboot automatisch neu.","brizy_media":[],"_links":{"self":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/posts\/4934","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/comments?post=4934"}],"version-history":[{"count":2,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/posts\/4934\/revisions"}],"predecessor-version":[{"id":4995,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/posts\/4934\/revisions\/4995"}],"wp:attachment":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/media?parent=4934"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/categories?post=4934"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/tags?post=4934"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}