
{"id":19987,"date":"2023-12-18T13:05:00","date_gmt":"2023-12-18T12:05:00","guid":{"rendered":"https:\/\/contabo.com\/blog\/docker-vs-kubernetes-ein-vergleich\/"},"modified":"2025-08-03T22:24:18","modified_gmt":"2025-08-03T20:24:18","slug":"docker-vs-kubernetes-ein-vergleich","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/de\/docker-vs-kubernetes-ein-vergleich\/","title":{"rendered":"Docker vs. Kubernetes: Ein Vergleich"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/12\/image-4.jpeg\" alt=\"Docker vs. Kubernetes - Titelbild\" class=\"wp-image-18738\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/12\/image-4.jpeg 1200w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/12\/image-4-600x315.jpeg 600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/12\/image-4-768x403.jpeg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>In der modernen Softwareentwicklung hat die <strong>Containerisierung<\/strong> die Art und Weise, wie Anwendungen erstellt, bereitgestellt und verwaltet werden, revolutioniert. Im Kern geht es darum, Software in abgeschlossene Einheiten \u2013 sogenannte <strong>Container<\/strong> \u2013 zu verpacken, die alle notwendigen Komponenten wie Code, Laufzeitumgebung und Bibliotheken enthalten. Dieser Ansatz gew\u00e4hrleistet die Konsistenz \u00fcber verschiedene Computerumgebungen hinweg und l\u00f6st das klassische \u201eEs funktioniert aber auf meinem Rechner\u201c-Problem.<\/p>\n\n\n\n<p>An der Spitze dieser Bewegung stehen <strong>Docker<\/strong> und <strong>Kubernetes<\/strong>. Doch obwohl sie oft im selben Atemzug genannt werden, erf\u00fcllen sie unterschiedliche Aufgaben. Docker ist das Werkzeug, um einzelne Container zu erstellen und zu verwalten. Kubernetes hingegen ist ein Orchestrierungs-Tool, das Hunderte oder Tausende dieser Container in gro\u00dfem Stil automatisiert.<\/p>\n\n\n\n<p>Dieser Artikel beleuchtet die Funktionen beider Technologien, vergleicht ihre St\u00e4rken und Schw\u00e4chen und erkl\u00e4rt, wie sie zusammenarbeiten, um eine der leistungsf\u00e4higsten Plattformen f\u00fcr moderne Anwendungen zu bilden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-docker-im-detail-die-grundlagen-der-containerisierung\">Docker im Detail: Die Grundlagen der Containerisierung<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-was-ist-docker\">Was ist Docker?<\/h3>\n\n\n\n<p>Docker ist eine Open-Source-Plattform, die es Entwicklern erm\u00f6glicht, Anwendungen und ihre Abh\u00e4ngigkeiten in leichtgewichtige, portable Container zu packen. Ein Docker-Container ist ein eigenst\u00e4ndiges, ausf\u00fchrbares Softwarepaket, das alles enth\u00e4lt, was zur Ausf\u00fchrung ben\u00f6tigt wird. Diese Container sind voneinander und vom Host-System isoliert, was f\u00fcr Konsistenz und Sicherheit sorgt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-hauptmerkmale-von-docker\">Hauptmerkmale von Docker<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Portabilit\u00e4t und Konsistenz:<\/strong> Eine Docker-Anwendung l\u00e4uft auf jedem System, das Docker unterst\u00fctzt, auf exakt die gleiche Weise. Dies vereinfacht die Entwicklung und vermeidet Konflikte zwischen verschiedenen Umgebungen.<\/li>\n\n\n\n<li><strong>Ressourceneffizienz:<\/strong> Container teilen sich den Kernel des Host-Betriebssystems und sind daher deutlich ressourcenschonender als traditionelle virtuelle Maschinen (VMs), die ein komplettes Gast-Betriebssystem ben\u00f6tigen.<\/li>\n\n\n\n<li><strong>Isolation:<\/strong> Jeder Container arbeitet in einer isolierten Umgebung. Ein Fehler oder eine Sicherheitsl\u00fccke in einem Container wirkt sich nicht auf andere aus.<\/li>\n\n\n\n<li><strong>Schnelle Bereitstellung (Rapid Deployment):<\/strong> Neue Container k\u00f6nnen in Sekunden gestartet werden, was Entwicklungs- und Testzyklen erheblich beschleunigt.<\/li>\n\n\n\n<li><strong>Modularit\u00e4t (Microservices):<\/strong> Docker ist ideal f\u00fcr Microservice-Architekturen, bei denen jeder Dienst in einem eigenen Container gekapselt und unabh\u00e4ngig verwaltet werden kann.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-wie-funktioniert-docker\">Wie funktioniert Docker?<\/h3>\n\n\n\n<p>Docker nutzt eine Client-Server-Architektur. Der <strong>Docker-Client<\/strong> (der Befehl <code>docker<\/code> im Terminal) kommuniziert mit dem <strong>Docker-Daemon<\/strong> (dem Hintergrunddienst), der f\u00fcr das Erstellen, Ausf\u00fchren und Verteilen von Containern zust\u00e4ndig ist. Die Anweisungen zum Bau eines Containers werden in einem <strong>Dockerfile<\/strong> (einer einfachen Textdatei) definiert. Aus diesem Dockerfile wird ein <strong>Image<\/strong> erstellt \u2013 eine schreibgesch\u00fctzte Vorlage. Wenn ein Image ausgef\u00fchrt wird, entsteht daraus ein oder mehrere lauff\u00e4hige <strong>Container<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-kubernetes-im-detail-die-kunst-der-container-orchestrierung\">Kubernetes im Detail: Die Kunst der Container-Orchestrierung<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-was-ist-kubernetes\">Was ist Kubernetes?<\/h3>\n\n\n\n<p>Kubernetes (oft als <strong>K8s<\/strong> abgek\u00fcrzt) ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen. Es wurde urspr\u00fcnglich von Google entwickelt und wird heute von der Cloud Native Computing Foundation (CNCF) gepflegt. Kubernetes gruppiert Container in logische Einheiten und hat sich als De-facto-Standard f\u00fcr die Container-Orchestrierung etabliert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-hauptmerkmale-von-kubernetes\">Hauptmerkmale von Kubernetes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Automatisiertes Scheduling:<\/strong> Kubernetes verteilt Container intelligent auf die verf\u00fcgbaren Server (Knoten) im Cluster, basierend auf deren Ressourcenanforderungen und Auslastung.<\/li>\n\n\n\n<li><strong>Selbstheilung:<\/strong> Kubernetes startet ausgefallene Container automatisch neu, ersetzt sie bei Bedarf und sorgt so f\u00fcr eine hohe Verf\u00fcgbarkeit der Anwendung.<\/li>\n\n\n\n<li><strong>Horizontale Skalierung:<\/strong> Anwendungen k\u00f6nnen mit einfachen Befehlen oder sogar vollautomatisch basierend auf der CPU-Auslastung skaliert werden, um auf Lastspitzen zu reagieren.<\/li>\n\n\n\n<li><strong>Service Discovery und Lastausgleich:<\/strong> Kubernetes macht Container \u00fcber einen DNS-Namen oder eine IP-Adresse im Netzwerk verf\u00fcgbar und kann den Datenverkehr automatisch auf mehrere Container verteilen (Load Balancing).<\/li>\n\n\n\n<li><strong>Automatisierte Rollouts und Rollbacks:<\/strong> Updates f\u00fcr Anwendungen k\u00f6nnen kontrolliert ausgerollt werden. Bei Problemen kann Kubernetes automatisch auf die vorherige, stabile Version zur\u00fcckkehren.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-wie-funktioniert-kubernetes\">Wie funktioniert Kubernetes?<\/h3>\n\n\n\n<p>Kubernetes verwaltet eine Gruppe von Servern als einen einzigen <strong>Cluster<\/strong>. Die kleinste bereitstellbare Einheit in Kubernetes ist nicht der Container selbst, sondern ein <strong>Pod<\/strong>. Ein Pod ist eine Abstraktion, die einen oder mehrere Container (zusammen mit Speicher- und Netzwerkressourcen) kapselt. Ein <strong>Deployment<\/strong> beschreibt den gew\u00fcnschten Zustand einer Anwendung (z. B. \u201ees sollen immer 3 Instanzen des Webserver-Pods laufen\u201c). Ein <strong>Service<\/strong> definiert, wie auf eine Gruppe von Pods zugegriffen werden kann.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-der-direkte-vergleich-docker-vs-kubernetes\">Der direkte Vergleich: Docker vs. Kubernetes<\/h2>\n\n\n\n<p>Die wichtigste Erkenntnis ist, dass Docker und Kubernetes keine direkten Konkurrenten sind. Sie l\u00f6sen unterschiedliche Probleme, die jedoch eng miteinander verbunden sind.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td>Aspekt<\/td><td>Docker<\/td><td>Kubernetes<\/td><\/tr><\/thead><tbody><tr><td><strong>Prim\u00e4rer Fokus<\/strong><\/td><td><strong>Containerisierung:<\/strong> Erstellen und Verpacken von Anwendungen in einzelne Container.<\/td><td><strong>Orchestrierung:<\/strong> Automatisierte Verwaltung Hunderter von Containern \u00fcber einen Cluster hinweg.<\/td><\/tr><tr><td><strong>Verwaltungseinheit<\/strong><\/td><td>Einzelner Container<\/td><td>Pod (eine Gruppe von einem oder mehreren Containern)<\/td><\/tr><tr><td><strong>Skalierung<\/strong><\/td><td>Manuell oder durch zus\u00e4tzliche Werkzeuge (z. B. Docker Swarm)<\/td><td>Integrierte, leistungsstarke automatische Skalierung<\/td><\/tr><tr><td><strong>Lastausgleich<\/strong><\/td><td>Manuelle Konfiguration erforderlich<\/td><td>Integrierte, automatisierte Lastausgleichs-Funktionen<\/td><\/tr><tr><td><strong>Speicher<\/strong><\/td><td>Unterst\u00fctzt persistenten Speicher, aber die Orchestrierung ist manuell<\/td><td>Bietet ein robustes, automatisiertes System zur Speicher-Orchestrierung<\/td><\/tr><tr><td><strong>Komplexit\u00e4t<\/strong><\/td><td>Einfacher zu erlernen und zu starten<\/td><td>H\u00f6here Komplexit\u00e4t, erfordert mehr Einarbeitung<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-die-synergie-wie-docker-und-kubernetes-zusammenarbeiten\">Die Synergie: Wie Docker und Kubernetes zusammenarbeiten<\/h2>\n\n\n\n<p>Die wahre St\u00e4rke liegt in der Kombination beider Technologien. Der typische Workflow sieht so aus:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Entwickeln &amp; Bauen (Docker):<\/strong> Ein Entwickler schreibt den Code f\u00fcr eine Anwendung und definiert die Umgebung in einem Dockerfile. Mit Docker wird daraus ein portables Container-Image gebaut.<\/li>\n\n\n\n<li><strong>Bereitstellen &amp; Verwalten (Kubernetes):<\/strong> Dieses Docker-Image wird in einer Registry gespeichert. Kubernetes holt sich das Image und stellt es als Pods im Cluster bereit. Anschlie\u00dfend \u00fcbernimmt Kubernetes die Verwaltung, Skalierung und \u00dcberwachung dieser Container im Produktionsbetrieb.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-vorteile-der-gemeinsamen-nutzung\">Vorteile der gemeinsamen Nutzung:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Optimierter Workflow:<\/strong> Ein nahtloser \u00dcbergang von der Entwicklung (Docker) zur Produktion (Kubernetes).<\/li>\n\n\n\n<li><strong>Konsistenz und Zuverl\u00e4ssigkeit:<\/strong> Docker sorgt f\u00fcr eine einheitliche Umgebung, Kubernetes f\u00fcr deren zuverl\u00e4ssigen Betrieb im gro\u00dfen Stil.<\/li>\n\n\n\n<li><strong>Effiziente Ressourcennutzung:<\/strong> Die Kombination aus leichtgewichtigen Docker-Containern und der intelligenten Ressourcenplanung von Kubernetes optimiert Kosten und Leistung.<\/li>\n\n\n\n<li><strong>Maximale Skalierbarkeit und Verf\u00fcgbarkeit:<\/strong> Die St\u00e4rken beider Tools erg\u00e4nzen sich perfekt, um hochverf\u00fcgbare und skalierbare Anwendungen zu betreiben.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-die-richtige-wahl-fur-dein-projekt\">Die richtige Wahl f\u00fcr dein Projekt<\/h2>\n\n\n\n<p>Die Entscheidung, ob du nur Docker oder Docker zusammen mit Kubernetes ben\u00f6tigst, h\u00e4ngt von den Anforderungen deines Projekts ab.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td>Szenario<\/td><td>Nur Docker empfohlen<\/td><td>Docker + Kubernetes empfohlen<\/td><\/tr><\/thead><tbody><tr><td><strong>Projektgr\u00f6\u00dfe<\/strong><\/td><td>Kleinere bis mittlere Projekte, einzelne Anwendungen<\/td><td>Gro\u00dfe, komplexe Anwendungen mit vielen Microservices<\/td><\/tr><tr><td><strong>Umgebung<\/strong><\/td><td>Lokale Entwicklung, Testumgebungen, Single-Host-Deployments<\/td><td>Multi-Host-, Cloud- oder Hybrid-Umgebungen<\/td><\/tr><tr><td><strong>Skalierung<\/strong><\/td><td>Statische oder manuelle Skalierung ist ausreichend<\/td><td>Dynamische, automatische Skalierung ist erforderlich<\/td><\/tr><tr><td><strong>Verf\u00fcgbarkeit<\/strong><\/td><td>Standard-Verf\u00fcgbarkeit ist akzeptabel<\/td><td>Hochverf\u00fcgbarkeit und Selbstheilung sind kritisch<\/td><\/tr><tr><td><strong>Teamgr\u00f6\u00dfe<\/strong><\/td><td>Kleinere Teams mit Fokus auf schnelle Entwicklung<\/td><td>Gr\u00f6\u00dfere Teams, die komplexe Deployments verwalten (DevOps)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-fazit\">Fazit<\/h2>\n\n\n\n<p>Docker und Kubernetes spielen zentrale, aber unterschiedliche Rollen in der modernen Softwareentwicklung.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Docker<\/strong> revolutioniert die <strong>Containerisierung<\/strong>, indem es die Erstellung und Verteilung von Anwendungen vereinfacht.<\/li>\n\n\n\n<li><strong>Kubernetes<\/strong> ist der Standard f\u00fcr die <strong>Orchestrierung<\/strong> und die Verwaltung dieser Container im gro\u00dfen Ma\u00dfstab.<\/li>\n<\/ul>\n\n\n\n<p>Die Frage lautet also nicht \u201eDocker oder Kubernetes?\u201c, sondern \u201eWann ben\u00f6tige ich Kubernetes zus\u00e4tzlich zu Docker?\u201c. F\u00fcr einfache Anwendungen mag Docker allein ausreichen. Sobald jedoch Skalierbarkeit, Hochverf\u00fcgbarkeit und die Verwaltung komplexer Systeme ins Spiel kommen, wird die Kombination aus Docker und Kubernetes zu einer unschlagbar leistungsstarken Plattform.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Docker vs. Kubernetes: Eine Gegen\u00fcberstellung, um die wichtigsten Unterschiede und St\u00e4rken dieser f\u00fchrenden Container-Technologien zu verstehen.<\/p>\n","protected":false},"author":50,"featured_media":18738,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_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":"","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":"set","ast-page-background-enabled":"default","ast-page-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":"","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-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":"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":""},"mobile":{"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":""}},"footnotes":""},"categories":[1399],"tags":[],"ppma_author":[1491],"class_list":["post-19987","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials"],"uagb_featured_image_src":{"full":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/12\/image-4.jpeg",1200,630,false],"thumbnail":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/12\/image-4-150x150.jpeg",150,150,true],"medium":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/12\/image-4-600x315.jpeg",600,315,true],"medium_large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/12\/image-4-768x403.jpeg",768,403,true],"large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/12\/image-4.jpeg",1200,630,false],"1536x1536":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/12\/image-4.jpeg",1200,630,false],"2048x2048":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/12\/image-4.jpeg",1200,630,false]},"uagb_author_info":{"display_name":"Tobias Mildenberger","author_link":"https:\/\/contabo.com\/blog\/de\/author\/tobias\/"},"uagb_comment_info":0,"uagb_excerpt":"Docker vs. Kubernetes: Eine Gegen\u00fcberstellung, um die wichtigsten Unterschiede und St\u00e4rken dieser f\u00fchrenden Container-Technologien zu verstehen.","authors":[{"term_id":1491,"user_id":50,"is_guest":0,"slug":"tobias","display_name":"Tobias Mildenberger","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/077178d5dce6c3d4c0c0396857a7e544bfdf8adf04145fff5160b33a22e28b1f?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/19987","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/users\/50"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=19987"}],"version-history":[{"count":6,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/19987\/revisions"}],"predecessor-version":[{"id":24844,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/19987\/revisions\/24844"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/media\/18738"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=19987"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=19987"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=19987"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/ppma_author?post=19987"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}