it-swarm.com.de

Docker Container SSL-Zertifikate

Gibt es eine elegante Möglichkeit, SSL-Zertifikate zu Bildern hinzuzufügen, die vom Docker Pull stammen?.

Ich suche nach einer einfachen und reproduzierbaren Möglichkeit, eine Datei in/etc/ssl/certs einzufügen und update-ca-certificates auszuführen. (Dies sollte Ubuntu- und Debian-Images abdecken).

Ich verwende Docker unter CoreOS, und der Coreos-Computer vertraut den erforderlichen SSL-Zertifikaten, aber die Docker-Container haben offensichtlich nur die Standardeinstellungen.

Ich habe versucht, mit docker run --entrypoint=/bin/bash Das Zertifikat hinzuzufügen und update-ca-certificates Auszuführen, aber dies scheint den Einstiegspunkt dauerhaft zu überschreiben.

Ich frage mich jetzt auch, ob es eleganter wäre, nur /etc/ssl/certs Auf dem Container von der Host-Maschinenkopie anzubringen? Dies würde implizit den Containern ermöglichen, den gleichen Dingen wie dem Host zu vertrauen.

Ich arbeite mit einem lästigen Proxy, der alles zurückgibt :(. Was SSL kaputt macht und es seltsam macht, mit Containern zu arbeiten.

61
Beau Trepp

Befestigen Sie die Zertifikate am Docker Container mit -v:

docker run -v /Host/path/to/certs:/container/path/to/certs -d IMAGE_ID "update-ca-certificates"
57
cdrev

Ich versuche etwas Ähnliches zu tun. Wie oben erwähnt, sollten Sie ein neues Image mit einer benutzerdefinierten Docker-Datei erstellen (wobei Sie das Image verwenden, das Sie als Basis-Image gezogen haben). ADD Ihr Zertifikat, dann RUN update-ca-certificates. Auf diese Weise haben Sie jedes Mal einen konsistenten Status, wenn Sie einen Container von diesem neuen Image aus starten.

# Dockerfile
FROM some-base-image:0.1
ADD you_certificate.crt:/container/cert/path
RUN update-ca-certificates

Sagen wir ein docker build dagegen erzeugte Dockerfile IMAGE_ID. Auf der nächsten docker run -d [any other options] IMAGE_ID, der von diesem Befehl gestartete Container enthält Ihre Zertifikatsinformationen. Einfach und reproduzierbar.

20
shudgston

Wie in einem Kommentar oben vorgeschlagen, kann der Zertifikatspeicher auf dem Host, der mit dem Gast kompatibel ist, einfach direkt eingehängt werden.

Auf einem Debian-Host (und Container) habe ich erfolgreich Folgendes ausgeführt:

docker run -v /etc/ssl/certs:/etc/ssl/certs:ro ...
16