将Docker的TLS选项设置为环境变量

时间:2016-05-07 01:56:09

标签: docker environment-variables

我已经使用证书运行了本地docker守护程序,我可以使用非常长的winded命令列出所有正在运行的容器,如

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,但它似乎无法正常工作 如果未指定DOCKER_CACERT,是否存在docker会读取的--tlscacert环境变量?

1 个答案:

答案 0 :(得分:4)

应在docker daemon config file

中设置这些选项
"tls": true,
"tlsverify": true,
"tlscacert": "",
"tlscert": "",
"tlskey": "",
  

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

在客户端,您需要设置docker-machine env变量:

例如:

$ 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

(将dev替换为您的机器名称)

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