Machine: env docker-machine é lento

Criado em 19 set. 2015  ·  5Comentários  ·  Fonte: docker/machine

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'

Comentários muito úteis

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}"

Todos 5 comentários

É 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}"
Esta página foi útil?
0 / 5 - 0 avaliações