script de shell para garantir que o Docker Daemon esteja em execução - Docker oficial no OSx

0

O docker oficial está instalado neste Mac El Capitan. Ao executar um arquivo bash, um dos comandos é iniciar o daemon do docker se ele não estiver em execução:

    [[ $(docker-machine status) == "Stopped" ]] && docker-machine start
    eval $(docker-machine env)

Eu estou supondo que não estava sendo executado porque recebi a saída abaixo, a qual esperava que o código acima funcionasse normalmente. O que precisa ser feito para que isso aconteça?

Starting "default"...  
(default) Check network to re-create if needed...  
(default) Waiting for an IP...  
Machine "default" was started.  
Waiting for SSH to be available...  
Detecting the provisioner...  
Started machines may have new IP addresses. You may need to re-run the 'docker-machine env' command.  
Error checking TLS connection: Error checking and/or regenerating the certs:   There was an error validating certificates for host "192.168.99.100:2376": tls: DialWithDialer timed out  
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.  
Be advised that this will trigger a Docker daemon restart which will stop running containers.  

Como sempre executamos o arquivo de script pela segunda vez, tudo correu bem.

    
por Fred J. 09.12.2016 / 11:13

1 resposta

1

O Docker no OS X (ou MacOS, como é chamado agora) é executado em uma máquina virtual Linux, geralmente usando o VirtualBox como o hipervisor. Portanto, quando você iniciar o docker usando docker-machine start , levará algum tempo para que a máquina virtual e todos os serviços nela sejam iniciados e se tornem disponíveis. Então, para contornar isso, você poderia fazer algo como o seguinte:

[[ $(docker-machine status) == "Stopped" ]] && docker-machine start
sleep 10
eval $(docker-machine env)

Você pode querer ajustar o valor passado para sleep se isso for muito ou não for suficiente, já que o tempo que a máquina virtual leva para ficar disponível depende do hardware do seu OS X host, bem como o hardware virtual alocado para o convidado do Docker.

    
por 09.12.2016 / 19:50