2016-05-07 5 views
1

ich den lokalen Docker-Daemon haben laufen mit Hilfe von Zertifikaten und ich kann das sehr langatmig Befehl wieEinstellung TLS-Optionen für Docker als Umgebungsvariablen

docker --tlsverify --tlscacert=/path/ca.cer --tlscert=/path/client.cert --tlskey=/path/client.key -H=localhost:2376 ps 

alle laufenden Behälter mit Liste, aber wenn ich laufe docker ps I erhalten Sie einen bad certificate Fehler, da die verschiedenen TLS-Optionen aus dem obigen Befehl nicht an Docker übergeben werden. Ich habe einige Stunden damit verbracht, die Docker-Website durchzugehen und finde keine Optionen, wie ich sie einstellen könnte.

Ich habe DOCKER_CERT_PATH eingestellt, aber es scheint nicht zu funktionieren.
Gibt es eine DOCKER_CACERT Umgebungsvariable, die Docker lesen würde, wenn --tlscacert nicht angegeben ist?

Antwort

3

Diese Optionen sollten in der docker daemon config file

"tls": true, 
"tlsverify": true, 
"tlscacert": "", 
"tlscert": "", 
"tlskey": "", 

Die --config-file Option eingestellt werden, können Sie eine beliebige Konfigurationsoption für den Dämon in einem JSON-Format einzustellen.
Standardmäßig versucht Docker, eine Konfigurationsdatei von /etc/docker/daemon.json unter Linux und %programdata%\docker\config\daemon.json unter Windows zu laden.

Auf der Clientseite müssen Sie die docker-machine env Variablen setzen:

Zum Beispiel:

$ docker-machine.exe env --shell cmd dev 
set DOCKER_TLS_VERIFY=1 
set DOCKER_HOST=tcp://192.168.99.101:2376 
set DOCKER_CERT_PATH=C:\Users\captain\.docker\machine\machines\dev 
set DOCKER_MACHINE_NAME=dev 
# Run this command to configure your shell: copy and paste the above values into your command prompt 

(Ersetzen dev mit dem Namen Ihrer Maschine)

Stellen Sie sicher, DOCKER_CERT_PATH bezieht sich auf einen Ordner, der Ihr Zertifikat enthält.

+0

Dies scheint für den Daemon zu funktionieren, aber das Ausführen von 'docker ps' würde sozusagen den lokalen Client ausführen, der eine Verbindung zum Docker-Daemon herstellen würde. Ich habe die Umgebungsvariable DOCKER_CONFIG verwendet, um auf die gleiche Datei zu zeigen, so dass sie beide die gleichen Zertifikate verwenden, aber es klagt immer noch über "schlechtes Zertifikat", wenn ich ohne CLI-Optionen für tlscacert usw. laufe. – airtruk

+0

@airtruk Ich habe die Client-Seite hinzugefügt in der geänderten Antwort. – VonC