Não consegui encontrar um tíquete em aberto sobre esse problema, mas acho que não sou o único com esse problema.
$ 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
.. então ter eval $(docker-machine env dev)
em .bash_profile não é divertido.
Solução alternativa 1: codifique as exportações
$ docker-machine env dev >> ~/.bash_profile
Solução alternativa 2: correção de carregamento lento muito suja
# 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'
É mais difícil do que parece torná-lo rápido, já que você realmente tem que pesquisar o endereço IP da VM em questão (e regenerar certificados se eles foram invalidados). Se você estiver disposto a aceitar a troca de consistência, poderá fazer sua própria versão usando os valores "armazenados em cache" por inspect
, mas não posso garantir que funcionará para sempre.
Vou encerrar isso porque não consigo pensar em uma maneira de melhorar o método atual sem sacrificar a consistência, mas sinta-se à vontade para abrir um novo problema com sugestões sobre como o método pode ser melhorado, por exemplo, docker-machine env --cached dev
para usar valores "em cache".
Não estou familiarizado com docker-machine, por isso é difícil ter uma sugestão. Eu só queria relatar o problema para que pudesse ser discutido :)
Estou usando o driver vmwarefusion btw.
Obrigado por relatar e anotado!
Acabei com isso, ele roda em 0.040
para mim.
: ${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}"
Comentários muito úteis
Acabei com isso, ele roda em
0.040
para mim.