我的Docker Machine经常出现问题 - 每隔几天就会决定超时,一旦发生这种情况我就无法恢复。
示例
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default virtualbox Timeout
环境信息
uname -a Darwin ColeyMBPR 15.4.0 Darwin Kernel Version 15.4.0: Fri Feb 26 22:08:05 PST 2016; root:xnu-3248.40.184~3/RELEASE_X86_64 x86_64
docker version 1.11.0
docker-machine version 0.7.0
vboxmanage --version 5.0.20r106931
尝试解决方案
我没有按特定顺序尝试以下事项:
eval "$(docker-machine env default)"
docker-machine regenerate-certs default
哈克
现在唯一能为我工作的是摧毁泊坞机并重新创建它。这会破坏我的所有图像和容器,再次设置它会非常耗费时间。
docker-machine rm -y default && docker-machine create -d virtualbox default && eval $(docker-machine env)
我有什么可以尝试的吗?谢谢!
更新:5月9日(重播步骤)
我可以通过以下步骤可靠地重现此问题:
docker-compose up
构建一些容器。答案 0 :(得分:20)
答案 1 :(得分:4)
这通常是与启动和停止机器的方式有关的问题。
U可以使用
解决它$ docker-machine stop default
$ docker-machine start default
$ docker-machine regenerate-certs default
请勿使用" docker-machine restart default"因为它不会刷新你的网络配置。
答案 2 :(得分:3)
我在Docker 1.11.2版本中遇到了同样的问题,构建了b9f10c9
这对我有用 - 我的码头机器回到了运行状态
$ docker-machine restart
$ eval $(docker-machine env)
答案 3 :(得分:3)
检查您是否正在使用代理或VPN!
以上所有建议均不适用于我,直到我关闭VPN并突然:
docker-machine.exe ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.102:2376 v19.03.5
答案 4 :(得分:1)
我的问题很简单。我用ufw防火墙阻止了端口2376。 Docker机器需要打开此端口才能连接到远程计算机。
答案 5 :(得分:0)
到目前为止,我有一些hacky解决方案 - 这可以修复docker机器,但会破坏所有容器和图像。
脚本:rebuild-machine.sh
docker-machine rm -y default
docker-machine create -d virtualbox default
docker-machine stop default
VBoxManage modifyvm "default" --natpf1 "Forwarding App 1,tcp,127.0.0.1,3000,,3000"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 2,tcp,127.0.0.1,3001,,3001"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 3,tcp,127.0.0.1,3004,,3004"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 4,tcp,127.0.0.1,3005,,3005"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 5,tcp,127.0.0.1,3006,,3006"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 6,tcp,127.0.0.1,8081,,8081"
docker-machine start default
eval $(docker-machine env)
<强>解释强>
答案 6 :(得分:0)
这对我有用,我的容器没有被破坏:
在docker机器上重新启动VM
$ docker-machine restart default
docker version:1.12.3
docker-machine version:0.8.2,build e18a919
答案 7 :(得分:0)
我已打开虚拟机并关闭并手动启动所有vm。状态再次为running
答案 8 :(得分:0)
我的问题非常简单 - 我做过#34; docker machine ls&#34;重新启动docker机器后立即命令,因此它还没有运行,导致超时。