Eu sou um neófito do Docker, então não estou muito confiante na minha resposta, mas estava tendo o mesmo problema que você descreveu e aqui está como eu resolvi isso ...
Primeiro, vou assumir que você tem uma docker-machine funcional, como:
C:\Program Files\Docker Toolbox>docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
docker - hyperv Running tcp://192.168.0.22:2376 v1.9.1
Demorei um pouco para chegar até aqui, já que estou usando o Hyper-V para hospedar minha máquina Docker. Uma vez que você está aqui, você pode usar docker-machine
para obter suas configurações:
C:\Program Files\Docker Toolbox>docker-machine config docker
--tlsverify
--tlscacert="C:\Users\Ken\.docker\machine\certs\ca.pem"
--tlscert="C:\Users\Ken\.docker\machine\certs\cert.pem"
--tlskey="C:\Users\Ken\.docker\machine\certs\key.pem"
-H=tcp://192.168.0.22:2376
Para persistir esses parâmetros (para que você não precise passá-los em cada chamada de docker.exe
), você pode criar as seguintes variáveis de ambiente (clique em aqui para detalhes sobre as variáveis disponíveis):
set DOCKER_HOST=tcp://192.168.0.22:2376
set DOCKER_TLS_VERIFY=true
set DOCKER_CERT_PATH=C:\Users\Ken\.docker\machine\certs
Ainda não escrevi tudo isso, mas acho que criarei uma alternativa ao start.sh que vem com o Docker Toolbox, já que esse endereço IP provavelmente será alterado toda vez que você iniciar a máquina virtual que hospeda o Docker . NOTA: docker-machine
cobriu aqui também! Depois de iniciar sua máquina docker, você pode usar o comando docker-machine env <machine>
para definir essas variáveis de ambiente automaticamente!
Então, criei o seguinte script bash para substituir o script start.sh:
docker-machine start docker
eval "$(docker-machine.exe env docker)"
Obviamente, você terá que trocar meus detalhes pelo seu, mas espero que isso seja útil. Eu sei que tive um tempo terrível encontrando documentação sobre como fazer essas coisas rodarem no Windows 10.