{"id":11673,"date":"2026-05-20T10:33:47","date_gmt":"2026-05-20T03:33:47","guid":{"rendered":"\/de\/tutorials\/?p=11673"},"modified":"2026-05-20T10:33:49","modified_gmt":"2026-05-20T03:33:49","slug":"docker-build-secrets-verwenden","status":"publish","type":"post","link":"\/de\/tutorials\/docker-build-secrets-verwenden","title":{"rendered":"So verwenden Sie Docker-Build-Secrets: Sensible Daten sicher in Builds \u00fcbergeben"},"content":{"rendered":"<p>Docker-Build-Secrets sind eine <strong>Funktion von Docker BuildKit, mit der Sie sensible Daten wie API-Schl&uuml;ssel und Passw&ouml;rter w&auml;hrend des Build-Prozesses sicher &uuml;bergeben k&ouml;nnen, ohne sie in das finale Image einzubetten<\/strong>.<\/p><p>Lesen Sie weiter, um mehr &uuml;ber die Verwendung von Build-Secrets zu erfahren, darunter:<\/p><ol class=\"wp-block-list\">\n<li>Was Docker-Build-Secrets sind und warum sie unverzichtbar sind.<\/li>\n\n\n\n<li>So erstellen, &uuml;bergeben und verwenden Sie Secrets in einer Dockerfile.<\/li>\n\n\n\n<li>So integrieren Sie Build-Secrets mit Docker Compose in Multi-Service-Anwendungen.<\/li>\n\n\n\n<li>So nutzen Sie SSH-Mounts f&uuml;r den sicheren Zugriff auf private Ressourcen.<\/li>\n\n\n\n<li>Best Practices zum Schutz sensibler Daten.<\/li>\n<\/ol><p>Am Ende wissen Sie, wie Sie sensible Daten bereits w&auml;hrend der Build-Zeit mit sicheren, tempor&auml;ren Methoden f&uuml;r das Secret-Management in modernen Container-Workflows sch&uuml;tzen.<\/p><h2 class=\"wp-block-heading\" id=\"h-what-are-docker-build-secrets\">Was sind Docker-Build-Secrets?<\/h2><p>Docker-Build-Secrets bieten eine <strong>sichere M&ouml;glichkeit, w&auml;hrend eines Docker-Builds sensible Dateien zu verwenden, ohne sie im finalen Image zu hinterlassen<\/strong>.<\/p><p>Wenn Sie ein Secret verwenden, bindet Docker es vor&uuml;bergehend in den Build-Container ein. Sobald der Build-Schritt, der das Secret verwendet, abgeschlossen ist, h&auml;ngt Docker die Datei wieder aus. Das Geheimnis wird weder in den Bildebenen noch in deren Verlauf gespeichert.<\/p><p>Der wichtigste Vorteil gegen&uuml;ber &auml;lteren Methoden wie <strong>ARG<\/strong> und <strong>ENV<\/strong> ist die Sicherheit. Mit <strong>ARG<\/strong> oder <strong>ENV<\/strong> &uuml;bergebene Daten lassen sich mit dem Befehl <strong>docker history<\/strong> einsehen, wodurch Ihre Geheimnisse offengelegt werden k&ouml;nnten.<\/p><p>Mit Build-Secrets bleiben die Daten fl&uuml;chtig und werden nie Teil des Images, wodurch versehentliche Datenlecks verhindert werden.<\/p><h3 class=\"wp-block-heading\" id=\"h-what-are-the-types-of-build-secrets\">Welche Arten von Build-Secrets gibt es?<\/h3><p>Docker unterst&uuml;tzt beim Umgang mit sensiblen Daten w&auml;hrend des Build-Prozesses zwei Arten von Mounts:<\/p><ul class=\"wp-block-list\">\n<li><strong>Geheime Mounts<\/strong>. Wird f&uuml;r allgemeine Geheimnisse verwendet, etwa API-Schl&uuml;ssel, Datenbankpassw&ouml;rter oder Konfigurationsdateien. Docker begrenzt diese Secret-Dateien auf <strong>500 KB<\/strong>.<\/li>\n\n\n\n<li><strong>SSH-Mounts<\/strong>. Dient dazu, SSH-Agent-Verbindungen weiterzuleiten und so w&auml;hrend des Builds einen sicheren Zugriff auf private Git-Repositories oder andere per SSH gesch&uuml;tzte Ressourcen zu erm&ouml;glichen.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-how-to-create-and-pass-docker-build-secrets\">Docker-Build-Secrets erstellen und &uuml;bergeben<\/h2><p>Die einzelnen Schritte zum Erstellen und &Uuml;bergeben Ihres ersten Build-Secrets finden Sie unten.<\/p><h3 class=\"wp-block-heading\" id=\"h-1-install-docker-and-enable-docker-buildkit\">1. Installieren Sie Docker und aktivieren Sie Docker BuildKit<\/h3><p><a href=\"\/de\/tutorials\/docker-auf-ubuntu-installieren\">Installieren Sie zun&auml;chst Docker<\/a> auf Ihrem System. Die Schritte unterscheiden sich je nach Betriebssystem. F&uuml;r dieses Beispiel verwenden wir Docker unter <strong>Ubuntu<\/strong>.<\/p><p>Aktivieren Sie als N&auml;chstes Docker BuildKit, da diese Komponente die Funktion f&uuml;r Build-Secrets bereitstellt. Sie k&ouml;nnen es f&uuml;r einen einzelnen Build oder dauerhaft aktivieren.<\/p><p>Wenn Sie BuildKit f&uuml;r einen einzelnen Build aktivieren m&ouml;chten, f&uuml;hren Sie den Build-Befehl mit der Umgebungsvariable <strong>DOCKER_BUILDKIT=1<\/strong> aus:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">DOCKER_BUILDKIT=1 docker build .<\/pre><p>Um BuildKit dauerhaft zu aktivieren, bearbeiten Sie die Docker-Daemon-Konfigurationsdatei unter <strong>~\/.docker\/config.json<\/strong> und f&uuml;gen Sie das folgende Feature-Flag hinzu:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n   \"features\": {\n      \"buildkit\": true\n   }\n}<\/pre><h3 class=\"wp-block-heading\" id=\"h-2-create-your-secret-file\">2. Erstellen Sie Ihre geheime Datei<\/h3><p>Eine Secret-Datei ist eine Klartextdatei, die die sensiblen Daten enth&auml;lt, die Sie sch&uuml;tzen m&ouml;chten. Erstellen Sie f&uuml;r dieses Beispiel eine Datei, in der Sie ein Datenbankpasswort speichern.<\/p><p>Erstellen Sie in Ihrem Terminal die geheime Datei:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">echo \"mydb_password\" &gt; mydb-password.txt<\/pre><p>Wenn Sie mehrere Secrets haben, speichern Sie jedes einzelne in einer separaten Datei. Damit k&ouml;nnen Sie deren Berechtigungen verwalten und sie einzeln in den Container einbinden. Zum Beispiel:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">echo \"my_api_key\" &gt; api-key.txt\necho \"my_ssh_key\" &gt; ssh-key.txt<\/pre><h3 class=\"wp-block-heading\" id=\"h-3-pass-the-secret-with-the-secret-flag\">3. &Uuml;bergeben Sie das Secret mit dem Flag &ndash;secret<\/h3><p>Um die geheime Datei an den Build-Prozess zu &uuml;bergeben, verwenden Sie in Ihrem <strong>docker build<\/strong>-Befehl das Flag <strong>&ndash;secret<\/strong>, und zwar so:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">--secret id=mydb_password,src=mydb-password.txt<\/pre><p>Hier ist eine Aufschl&uuml;sselung der Syntax des Flags:<\/p><ul class=\"wp-block-list\">\n<li><strong>&ndash;geheim<\/strong>. Das Flag, das BuildKit mitteilt, dass Sie ein Secret &uuml;bergeben.<\/li>\n\n\n\n<li><strong>id=mydb_password<\/strong>. Eine eindeutige Kennung f&uuml;r das Secret. Verwenden Sie diese ID, um in Ihrer Dockerfile auf das Secret zu verweisen.<\/li>\n\n\n\n<li><strong>src=mydb-password.txt<\/strong>. Der Pfad zur geheimen Datei auf Ihrem Host-Rechner.<\/li>\n<\/ul><p>Dieses Flag verwenden Sie sp&auml;ter, nachdem Sie in Ihrer Dockerfile auf das Secret verwiesen haben.<\/p><h2 class=\"wp-block-heading\" id=\"h-consuming-secrets-in-dockerfiles\">Secrets in Dockerfiles verwenden<\/h2><p>Sobald Sie einen geheimen Wert an den Build-Befehl &uuml;bergeben, k&ouml;nnen Sie ihn in Ihrer Dockerfile verf&uuml;gbar machen.<\/p><h3 class=\"wp-block-heading\" id=\"h-1-reference-your-secret-in-your-dockerfile\">1. Binden Sie Ihr Secret in Ihrem Dockerfile ein<\/h3><p>Um ein Secret zu verwenden, binden Sie es innerhalb einer <strong>RUN<\/strong>-Anweisung mit dem Flag <strong>&ndash;mount<\/strong> ein. Der Einh&auml;ngetyp f&uuml;r Secrets ist <strong>type=secret<\/strong>.<\/p><p>Hier ist ein Beispiel f&uuml;r ein Dockerfile, das Ihr Datenbankpasswort als Secret einbindet:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Ubuntu-Basis-Image verwenden\nFROM ubuntu:24.04\n\n# Secret mounten und pr&uuml;fen, ob es vorhanden ist, ohne den Secret-Wert auszugeben\nRUN --mount=type=secret,id=mydb_password \\\n   ls -l \/run\/secrets\/ &amp;&amp; \\\n   echo \"Secret is available and correctly mounted!\" || echo \"No secret found\"<\/pre><p>In diesem Beispiel entspricht <strong>id=mydb_password<\/strong> der ID, die Sie im Flag <strong>&ndash;secret<\/strong> angegeben haben. Standardm&auml;&szlig;ig bindet Docker das Secret unter <strong>\/run\/secrets\/<\/strong> ein, und der Dateiname im Container entspricht der ID des Secrets.<\/p><h3 class=\"wp-block-heading\" id=\"h-2-build-your-image\">2. Ihr Image aufbauen<\/h3><p>Erstellen Sie nun das Image mit dem vollst&auml;ndigen Befehl, einschlie&szlig;lich des Flags <strong>&ndash;secret<\/strong>. F&uuml;gen Sie <strong>&ndash;no-cache<\/strong> und <strong>&ndash;progress=plain<\/strong> hinzu, damit die Ausgabe klar angezeigt wird.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker build --no-cache --progress=plain --secret id=mydb_password,src=mydb-password.txt -t my-image .<\/pre><p>Bei Erfolg zeigt die Ausgabe, dass das Secret w&auml;hrend dieses <strong>RUN<\/strong> -Schritts korrekt im Verzeichnis <strong>\/run\/secrets\/<\/strong> eingebunden wurde.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6a0d3de1017d9\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"199\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/de\/tutorials\/wp-content\/uploads\/sites\/29\/2026\/05\/docker-build-geheimnisse-sicher.jpg\" alt=\"Abbildung, die zeigt, wie Docker-Build-Secrets sicher an den Build-Container &uuml;bergeben werden, ohne im finalen Image offengelegt zu werden\" class=\"wp-image-11671\" srcset=\"https:\/\/www.hostinger.com\/de\/tutorials\/wp-content\/uploads\/sites\/29\/2026\/05\/docker-build-geheimnisse-sicher.jpg 1024w, https:\/\/www.hostinger.com\/de\/tutorials\/wp-content\/uploads\/sites\/29\/2026\/05\/docker-build-geheimnisse-sicher-300x58.jpg 300w, https:\/\/www.hostinger.com\/de\/tutorials\/wp-content\/uploads\/sites\/29\/2026\/05\/docker-build-geheimnisse-sicher-768x149.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Sobald der Schritt abgeschlossen ist, wird das Secret nicht gespeichert und ist im finalen Image nicht mehr enthalten.<\/p><h3 class=\"wp-block-heading\" id=\"h-3-access-secrets-within-build-steps\">3. Auf Secrets in Build-Schritten zugreifen<\/h3><p>Auf den Inhalt der geheimen Datei k&ouml;nnen Sie wie auf jede andere Datei zugreifen. Verwenden Sie zum Beispiel w&auml;hrend des Builds den <a href=\"\/\/www.hostinger.com\/tutorials\/linux-cat-command'%20in%20VLOOKUP%20evaluation.)\">cat-Befehl<\/a>, um den Inhalt zur Fehlerbehebung anzuzeigen.<\/p><p>Aktualisieren Sie Ihre Dockerfile wie folgt:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Mount a secret and access its content\nRUN --mount=type=secret,id=mydb_password \\\n   cat \/run\/secrets\/mydb_password || echo \"No secret found\"<\/pre><p>F&uuml;hren Sie dann den Build erneut aus:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker build --no-cache --progress=plain --secret id=mydb_password,src=mydb-password.txt -t my-image .<\/pre><p>Dadurch wird der Inhalt des Secrets in der Konsole ausgegeben. Das ist zwar f&uuml;r Tests n&uuml;tzlich, Sie sollten dies jedoch nicht in Ihren produktiven Dockerfiles belassen, da dadurch Geheimnisse in Ihren Build-Logs offengelegt werden k&ouml;nnen.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6a0d3de10270f\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"194\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/de\/tutorials\/wp-content\/uploads\/sites\/29\/2026\/05\/docker-build-geheimnisse-offengelegt.jpg\" alt=\"Bild, das zeigt, wie Docker-Build-Secrets durch Ausgeben offengelegt werden\" class=\"wp-image-11672\" srcset=\"https:\/\/www.hostinger.com\/de\/tutorials\/wp-content\/uploads\/sites\/29\/2026\/05\/docker-build-geheimnisse-offengelegt.jpg 1024w, https:\/\/www.hostinger.com\/de\/tutorials\/wp-content\/uploads\/sites\/29\/2026\/05\/docker-build-geheimnisse-offengelegt-300x57.jpg 300w, https:\/\/www.hostinger.com\/de\/tutorials\/wp-content\/uploads\/sites\/29\/2026\/05\/docker-build-geheimnisse-offengelegt-768x146.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Wenn Sie Apps mit mehreren Diensten erstellen, besteht der n&auml;chste Schritt darin, Secrets in Docker Compose zu integrieren.<\/p><h2 class=\"wp-block-heading\" id=\"h-integrating-build-secrets-in-docker-compose\">Build-Secrets in Docker Compose einbinden<\/h2><p>Docker Compose ist ein Werkzeug zum Definieren und Ausf&uuml;hren von Docker-Anwendungen mit mehreren Containern. Build-Secrets k&ouml;nnen Sie auch direkt in Ihrer Datei <strong>docker-compose.yml<\/strong> verwalten. Das vereinfacht die Konfigurationsverwaltung f&uuml;r komplexe Dienste.<\/p><p>Dieser Ansatz eignet sich ideal f&uuml;r die Verwaltung von Anwendungen wie einem Kafka-Cluster auf Docker, bei denen mehrere Komponenten sichere Konfigurationen ben&ouml;tigen.<\/p><p>Um Build-Secrets mit Docker Compose zu verwenden, definieren Sie diese im obersten Abschnitt <strong>secrets<\/strong> Ihrer Datei <strong>docker-compose.yml<\/strong> und weisen Sie sie anschlie&szlig;end den entsprechenden Services zu.<\/p><p>Hier ist ein Beispiel mit einem PostgreSQL-Datenbankdienst:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">version: \"3.8\"\nservices:\n   db:\n      image: postgres\n      environment:\n         POSTGRES_PASSWORD_FILE: \/run\/secrets\/mydb_password\n      secrets:\n         - mydb_password\nsecrets:\n   mydb_password:\n      file: .\/mydb-password.txt<\/pre><p>In dieser Datei:<\/p><ul class=\"wp-block-list\">\n<li>Der <strong>Secrets<\/strong>-Schl&uuml;ssel auf oberster Ebene definiert ein Secret mit dem Namen <strong>mydb_password<\/strong> und weist Compose an, es aus der Datei <strong>.\/mydb-password.txt<\/strong> zu beziehen.<\/li>\n\n\n\n<li>Der <strong>db<\/strong>-Dienst greift auf dieses Secret zu und macht es im Container verf&uuml;gbar.<\/li>\n\n\n\n<li>Die Umgebungsvariable <strong>POSTGRES_PASSWORD_FILE<\/strong> weist das PostgreSQL-Image an, das Datenbankpasswort aus dem angegebenen Dateipfad innerhalb des Containers zu lesen, der standardm&auml;&szlig;ig <strong>\/run\/secrets\/mydb_password<\/strong> ist.<\/li>\n<\/ul><p>Um Ihre App zu starten, f&uuml;hren Sie <strong>docker-compose up<\/strong> aus. Compose liest die geheime Datei von Ihrem Host und bindet sie sicher in den laufenden Container ein, ohne sie in der Service-Definition offenzulegen.<\/p><p>Bitte beachten Sie, dass Docker Compose zwar gut f&uuml;r die Verwaltung von App-Geheimnissen wie Passw&ouml;rtern geeignet ist, Sie jedoch h&auml;ufig Authentifizierungsgeheimnisse verwalten m&uuml;ssen. Hier k&ouml;nnen SSH-Mounts helfen.<\/p><h2 class=\"wp-block-heading\" id=\"h-using-ssh-mounts-for-secure-access\">SSH-Mounts f&uuml;r den sicheren Zugriff verwenden<\/h2><p>SSH-Mounts sind eine spezielle Art von Build-Geheimnissen, die SSH-Schl&uuml;ssel weiterleiten. Sie sind n&uuml;tzlich, wenn Sie w&auml;hrend eines Builds ein privates Git-Repository klonen oder auf andere durch SSH gesch&uuml;tzte Ressourcen zugreifen m&uuml;ssen.<\/p><p>Wie normale Secrets ist auch der SSH-Schl&uuml;ssel nur w&auml;hrend des <strong>RUN<\/strong>-Schritts vor&uuml;bergehend verf&uuml;gbar und wird niemals in das endg&uuml;ltige Image eingebettet.<\/p><p>In automatisierten CI\/CD-Pipelines, in denen Sie m&ouml;glicherweise Tools wie Ansible zur Installation und Konfiguration von Docker verwenden, bieten SSH-Mounts einen sicheren Kanal f&uuml;r diese Build-Schritte.<\/p><p>Um ein SSH-Mount zu verwenden, laden Sie Ihren SSH-Schl&uuml;ssel in Ihren lokalen SSH-Agenten.<\/p><p>Starten Sie zun&auml;chst den SSH-Agenten, falls er noch nicht ausgef&uuml;hrt wird:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">eval $(ssh-agent)<\/pre><p>F&uuml;gen Sie dann Ihren privaten Schl&uuml;ssel zum Agenten hinzu:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ssh-add ~\/.ssh\/id_rsa<\/pre><p>&Uuml;berpr&uuml;fen Sie, ob der Schl&uuml;ssel geladen ist:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ssh-add -l<\/pre><p>Verweisen Sie als N&auml;chstes in Ihrer Dockerfile auf das SSH-Mount. Der Mount-Typ f&uuml;r SSH ist <strong>type=ssh<\/strong>.<\/p><p>Unten finden Sie ein Beispiel, das ein privates Git-Repository klont:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">FROM ubuntu:24.04\n# Git- und SSH-Abh&auml;ngigkeiten installieren\nRUN apt update &amp;&amp; apt install -y git ssh-client\n\n# SSH-Schl&uuml;ssel von GitHub zu known_hosts hinzuf&uuml;gen, um Abfragen zur Host-Verifizierung zu vermeiden\nRUN mkdir -p -m 0700 ~\/.ssh &amp;&amp; \\\n    ssh-keyscan github.com &gt;&gt; ~\/.ssh\/known_hosts\n\n# Privates Git-Repository mit dem gemounteten SSH-Schl&uuml;ssel klonen\nRUN --mount=type=ssh git clone git@github.com:your-org\/your-private-repo.git \/myproject<\/pre><p>Abschlie&szlig;end erstellen Sie das Image mit dem Flag `<strong>&ndash;ssh<\/strong>`. Dieses Flag weist Docker an, den Socket des SSH-Agenten an den Build weiterzuleiten:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker build --ssh default -t my-image .<\/pre><p>Nachdem Sie nun wissen, wie Sie sowohl dateibasierte Secrets mit Docker Compose als auch SSH-Schl&uuml;ssel mit SSH-Mounts handhaben, sehen wir uns als N&auml;chstes bew&auml;hrte Methoden an, mit denen Sie Ihre Builds sicher halten.<\/p><h2 class=\"wp-block-heading\" id=\"h-what-are-some-best-practices-for-managing-docker-build-secrets\">Was sind bew&auml;hrte Methoden f&uuml;r die Verwaltung von Docker-Build-Secrets?<\/h2><p>Die Einhaltung bew&auml;hrter Verfahren hilft, sensible Daten in Docker-Containern w&auml;hrend des gesamten Entwicklungszyklus zu sch&uuml;tzen. Im Folgenden finden Sie einige allgemeing&uuml;ltige Richtlinien:<\/p><ul class=\"wp-block-list\">\n<li><strong>Verwenden Sie ARG oder ENV niemals f&uuml;r sensible Daten<\/strong>. Diese Anweisungen machen Werte &uuml;ber den Befehl <strong>docker history<\/strong> sichtbar und erm&ouml;glichen es Angreifern, sie aus Image-Layern zu extrahieren. Verwenden Sie stattdessen immer Mounts mit <strong>&ndash;secret<\/strong> oder <strong>&ndash;ssh<\/strong>.<\/li>\n\n\n\n<li><strong>Verwenden Sie f&uuml;r jede Umgebung separate Secrets<\/strong>. Verwenden Sie f&uuml;r Entwicklung, Staging und Produktion keine gemeinsamen Zugangsdaten. Dadurch wird die Auswirkung begrenzt, falls ein Geheimnis aus einer Umgebung kompromittiert wird.<\/li>\n\n\n\n<li><strong>Schlie&szlig;en Sie Geheimnisse von der Versionsverwaltung aus<\/strong>. F&uuml;gen Sie vertrauliche Dateien und Verzeichnisse Ihrer <strong>.gitignore<\/strong>-Datei hinzu, damit sie nicht in Ihr Repository eingecheckt werden.<\/li>\n\n\n\n<li><strong>Verwenden Sie die Verwaltung von Secrets zur Build-Zeit in CI\/CD<\/strong>. Plattformen wie GitHub Actions oder Jenkins bieten sichere M&ouml;glichkeiten, Secrets w&auml;hrend des Build-Prozesses einzuschleusen. Verwenden Sie stattdessen diese Funktionen, anstatt Geheimnisse in Ihrem Repository zu speichern.<\/li>\n\n\n\n<li><strong>Rotieren Sie Secrets regelm&auml;&szlig;ig<\/strong>. Passw&ouml;rter, API-Schl&uuml;ssel und andere Zugangsdaten regelm&auml;&szlig;ig &auml;ndern. Verwenden Sie Automatisierungstools wie HashiCorp Vault, um diesen Prozess effizient zu verwalten.<\/li>\n\n\n\n<li><strong>&Uuml;berpr&uuml;fen Sie Ihre Dockerfiles regelm&auml;&szlig;ig<\/strong>. &Uuml;berpr&uuml;fen Sie Dockerfiles auf unsichere Praktiken, etwa fest codierte Zugangsdaten oder <strong>ENV<\/strong>-Anweisungen mit sensiblen Daten, die versehentlich hinzugef&uuml;gt worden sein k&ouml;nnten.<\/li>\n<\/ul><figure class=\"wp-block-image size-large\"><a href=\"\/de\/vps-server\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2024\/02\/DE-VPS-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-3556\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2024\/02\/DE-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2024\/02\/DE-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2024\/02\/DE-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-key-takeaways\">Die wichtigsten Erkenntnisse<\/h2><p>Der Einsatz von Docker-Build-Secrets ist eine grundlegende Ma&szlig;nahme, um containerisierte Anwendungen abzusichern. Es verhindert, dass sensible Daten wie API-Schl&uuml;ssel, Token und Zugangsdaten versehentlich in Ihren finalen Docker-Images offengelegt werden.<\/p><p>Hier sind die wichtigsten Punkte, die Sie sich merken sollten:<\/p><ul class=\"wp-block-list\">\n<li><strong>Verwenden Sie immer das Secret-Management von BuildKit<\/strong>. Verwenden Sie f&uuml;r Dateien das Flag <strong>&ndash;secret<\/strong> und f&uuml;r SSH-Schl&uuml;ssel das Flag <strong>&ndash;ssh<\/strong>, um sensible Daten w&auml;hrend des Builds vor&uuml;bergehend bereitzustellen.<\/li>\n\n\n\n<li><strong>Hinterlegen Sie Geheimnisse niemals fest im Code<\/strong>. Verwenden Sie f&uuml;r sensible Daten keine <strong>ARG<\/strong>&ndash; oder <strong>ENV<\/strong>-Anweisungen, da diese unsicher sind und sich leicht offenlegen lassen.<\/li>\n\n\n\n<li><strong>Integrieren Sie Secrets in Ihre Workflows<\/strong>. Verwenden Sie die Secrets-Funktion von Docker Compose, um Konfigurationen f&uuml;r Multi-Container-Apps sauber und sicher zu verwalten.<\/li>\n\n\n\n<li><strong>Achten Sie auf eine konsequente Sicherheitsdisziplin<\/strong>. Halten Sie geheime Dateien mit <strong>.gitignore<\/strong> aus der Versionsverwaltung heraus, wechseln Sie Geheimnisse regelm&auml;&szlig;ig aus und verwenden Sie f&uuml;r jede Umgebung separate Zugangsdaten.<\/li>\n<\/ul><p>Als N&auml;chstes erh&ouml;hen Sie die Sicherheit Ihrer Docker-Umgebung, indem Sie eine private Docker-Registry einrichten, um den Zugriff auf Images zu steuern und sensible Workloads zu sch&uuml;tzen.<\/p><p>Dieser Ansatz sch&uuml;tzt Images, verringert das Risiko unbefugter Zugriffe und gibt Ihnen die volle Kontrolle &uuml;ber Ihre Deployment-Pipeline.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Docker-Build-Secrets sind eine Funktion von Docker BuildKit, mit der Sie sensible Daten wie API-Schl&uuml;ssel und Passw&ouml;rter w&auml;hrend des Build-Prozesses sicher &uuml;bergeben k&ouml;nnen, ohne sie in das finale Image einzubetten. Lesen Sie weiter, um mehr &uuml;ber die Verwendung von Build-Secrets zu erfahren, darunter: Am Ende wissen Sie, wie Sie sensible Daten bereits w&auml;hrend der Build-Zeit mit [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/de\/tutorials\/docker-build-secrets-verwenden\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":190,"featured_media":11670,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"Docker-Build-Secrets sicher verwenden","rank_math_description":"Erfahren Sie, wie Sie Docker-Build-Secrets nutzen, um sensible Daten sicher w\u00e4hrend des Build-Prozesses zu \u00fcbergeben.","rank_math_focus_keyword":"Docker-Build-Secrets","footnotes":""},"categories":[25],"tags":[],"class_list":["post-11673","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps"],"hreflangs":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/posts\/11673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/users\/190"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/comments?post=11673"}],"version-history":[{"count":5,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/posts\/11673\/revisions"}],"predecessor-version":[{"id":12033,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/posts\/11673\/revisions\/12033"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/media\/11670"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/media?parent=11673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/categories?post=11673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/tags?post=11673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}