将Docker的TLS选项设置为环境variables

我有使用证书运行的本地docker守护进程,并且可以使用非常长的命令来列出所有正在运行的容器

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

但是,当我运行docker ps我得到一个bad certificate错误,因为上述命令的各种TLS选项不会传递给docker工人。 我已经花了许多小时通过docker网站,并找不到如何设置它们的任何选项。

我已经设置了DOCKER_CERT_PATH ,但似乎没有工作。
如果没有指定--tlscacert ,是否有DOCKER_CACERT会读取的DOCKER_CACERT环境variables?

这些选项应该在docker守护进程configuration文件中设置

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

--config-file选项允许您为守护进程设置JSON格式的任何configuration选项。
默认情况下, /etc/docker/daemon.json尝试从Linux上的/etc/docker/daemon.json加载configuration文件,在/etc/docker/daemon.json上加载%programdata%\docker\config\daemon.json

在客户端,你需要设置docker-machine envvariables:

例如:

 $ 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 

(用您的机器名称replacedev

确保DOCKER_CERT_PATH引用包含您的证书的文件夹