我必须将DOCKER_HOST设置为localhost才能部署到生产环境。为什么?

时间:2017-12-30 06:10:41

标签: docker docker-machine

我已经和远程docker主机摔跤几个小时了。每次我尝试运行

$ eval (docker-machine env staging)
$ docker-compose up --build

我明白了:

backports.ssl_match_hostname.CertificateError: hostname 'xxx.xxx.xxx.xxx' doesn't match 'localhost'

我第一次遇到这个错误时,我发现我的本地dns有些问题。所以我看了/etc/hosts,发现没有错。我确实有一个ip xxx.xxx.xxx.xxx的条目。

然后我查看了我的docker环境变量。 DOCKER_MACHINE_NAME已设置为我的环境,DOCKER_HOST已设置为tcp://xxx.xxx.xxx.xxx:2376。那可能是什么错?

然后我发现了this博文,建议将我的DOCKER_HOST更改为localhost。我尝试过但它仍然没有用。最后,我在我的etc/hosts文件中添加了一个条目,该文件将localhost绑定到我的远程IP,将DOCKER_HOST更改为localhost,然后尝试docker-compose up。它奏效了。

这同时令人烦恼和缓解。一方面,我可以部署到我的staging env。但我必须使用一个我不完全理解的奇怪的解决方法。任何人都能解释为什么这有用吗更重要的是,我做错了什么?

更新

这是env | grep DOCKER

的输出
DOCKER_CERT_PATH=/home/me/.docker/machine/machines/staging
DOCKER_HOST=tcp://xxx.xxx.xxx.xx:2376
DOCKER_MACHINE_NAME=staging
DOCKER_TLS_VERIFY=1

docker-machine env staging(我使用鱼壳):

set -gx DOCKER_TLS_VERIFY "1";
set -gx DOCKER_HOST "tcp://xxx.xxx.xxx.x:2376";
set -gx DOCKER_CERT_PATH "/home/me/.docker/machine/machines/staging";
set -gx DOCKER_MACHINE_NAME "staging";
# Run this command to configure your shell: 
# eval (docker-machine env staging)

这是

Docker版本17.05.0-ce,build 89658be

docker-machine version 0.13.0,build 9ba6da9

docker-compose版本1.8.0,构建未知

更新2

我开始认为这是ssl证书的问题。所以我运行docker-machine regenerate-certs staging并重新部署。仍然是同一个问题。想法?

0 个答案:

没有答案