Um den Zustand von Docker über externe Systeme zu prüfen, ist es wichtig, Docker über HTTPS erreichbar zu machen. Mit dieser Anleitung zeige ich dir, wie du Docker per HTTPS verbinden kannst, indem du einen Docker-Container als Hilfsmittel nutzt. Diese Methode erleichtert die Einrichtung und sorgt für eine sichere Verbindung.
Schritt 1: Client-Zertifikat erstellen
Zuerst erstellen wir ein Client-Zertifikat. Dazu verwenden wir einen Docker-Container, der die benötigten Zertifikate generiert.
- Erstelle ein Verzeichnis für die Zertifikate:
mkdir $(pwd)/.docker
- Führe den folgenden Befehl aus, um das Zertifikat zu erstellen (Die Laufzeit ist hier auf 9999 Tage eingestellt):
docker run --rm -v $(pwd)/.docker:/certs \
-e CA_EXPIRE=9999 \
-e SSL_EXPIRE=9999 \
paulczar/omgwtfssl
Schritt 2: Zertifikate richtig einrichten
Nachdem die Zertifikate erstellt wurden, müssen wir deren Berechtigungen anpassen und sie an die richtige Stelle verschieben.
- Erstelle ein Verzeichnis für die Docker-SSL-Zertifikate:
mkdir /etc/docker/ssl/
- Kopiere das CA-Zertifikat:
cp ~/.docker/ca.pem /etc/docker/ssl/ca.pem
- Passe die Berechtigungen an:
chown -R $USER ~/.docker
Schritt 3: Server-Zertifikat erstellen
Nun erstellen wir ein Server-Zertifikat. Dabei müssen wir die Host-IP und den Hostnamen angeben.
- Führe den folgenden Befehl aus, wobei du die Host-IP unter
SSL_IP
und den Hostnamen unterSSL_DNS
einträgst:
docker run --rm -v /etc/docker/ssl:/server \
-v $(pwd)/.docker:/certs \
-e SSL_IP=127.0.0.1,172.20.1.x \
-e SSL_DNS=$HOSTNAME -e SSL_KEY=/server/key.pem \
-e SSL_CERT=/server/cert.pem \
-e CA_EXPIRE=9999 \
-e SSL_EXPIRE=9999 \
paulczar/omgwtfssl
Schritt 4: Docker-Konfiguration anpassen
Als nächstes passen wir die Docker-Konfigurationsdatei daemon.json
an, um HTTPS zu aktivieren.
- Öffne die Datei
/etc/docker/daemon.json
mit einem Texteditor:
nano /etc/docker/daemon.json
- Füge den folgenden Inhalt hinzu:
{
"hosts": [
"unix:///var/run/docker.sock",
"tcp://0.0.0.0:2376"
],
"tlsverify": true,
"tlscacert": "/etc/docker/ssl/ca.pem",
"tlscert": "/etc/docker/ssl/cert.pem",
"tlskey": "/etc/docker/ssl/key.pem"
}
Schritt 5: Docker-Service konfigurieren und neu starten
Zum Abschluss müssen wir den Docker-Service so konfigurieren, dass er die neuen Einstellungen verwendet, und ihn dann neu starten.
- Bearbeite die Docker-Service-Konfiguration:
sudo systemctl edit docker.service
- Füge den folgenden Inhalt im oberen Bereich der Datei ein:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
- Lade die Systemd-Daemons neu und starte Docker neu:
systemctl daemon-reload
systemctl restart docker
Fazit
Mit diesen Schritten hast du Docker erfolgreich über HTTPS erreichbar gemacht. Dies ermöglicht eine sichere Überwachung und Verwaltung deines Docker-Daemons über externe Systeme.