Machine: docker-machine env 很慢

创建于 2015-09-19  ·  5评论  ·  资料来源: docker/machine

我找不到有关此问题的公开票,但我想我不是唯一遇到此问题的人?

$ 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'

最有用的评论

我最终得到了这个,它对我来说以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}"

所有5条评论

让它变得更快比看起来更难,因为您必须实际查找有问题的 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 / 5 - 0 等级