我找不到有关此问题的公开票,但我想我不是唯一遇到此问题的人?
$ uname -a
Darwin 14.5.0 Darwin
Kernel Version 14.5.0: Wed Jul 29 02:26:53 PDT 2015;
root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64
$ time docker-machine env dev >/dev/null
real 0m0.254s
user 0m0.217s
.. 所以在 .bash_profile 中使用eval $(docker-machine env dev)
并不好玩。
解决方法 1:对导出进行硬编码
$ docker-machine env dev >> ~/.bash_profile
解决方法 2:非常脏的延迟加载修复
# Lazy load docker-machine env on first docker run
alias docker='docker-machine start dev>/dev/null && eval $(docker-machine env dev) && unalias docker && docker'
让它变得更快比看起来更难,因为您必须实际查找有问题的 VM 的 IP 地址(如果它们已失效,则重新生成证书)。 如果您愿意接受一致性权衡,您可以使用inspect
缓存的值制作自己的版本,但我不能保证这会永远有效。
我将关闭它,因为我想不出一种在不牺牲一致性的情况下改进当前方法的方法,但请随意打开一个新问题,提供有关如何改进该方法的建议,例如docker-machine env --cached dev
使用“缓存”值。
我对 docker-machine 不太熟悉,所以很难提出建议。 我只是想报告这个问题,以便讨论:)
顺便说一句,我正在使用 vmwarefusion 驱动程序。
感谢您的报告,并注意到!
我最终得到了这个,它对我来说以0.040
运行。
: ${DOCKER_MACHINE_NAME="my_vm_name"}
docker-machine inspect ${DOCKER_MACHINE_NAME} --format \
"export DOCKER_HOST=tcp://{{ .Driver.IPAddress }}:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH={{ .HostOptions.AuthOptions.StorePath }}
export DOCKER_MACHINE_NAME=${DOCKER_MACHINE_NAME}"
最有用的评论
我最终得到了这个,它对我来说以
0.040
运行。