我刚在Windows 10上使用docker-toolbox 1.8.2安装了docker。
由于this issue,我不得不使用这些命令重新创建docker镜像
docker-machine rm default
docker-machine --native-ssh create -d virtualbox default
之后它一直很好,除了一个问题:
当PC进入休眠状态然后再次唤醒时,docker命令无法再连接。例如:
> docker images
An error occurred trying to connect: Get https://192.168.99.100:2376/v1.20/images/json:
dial tcp 192.168.99.100:2376: ConnectEx tcp: A connection attempt failed because the
connected party did not properly respond after a period of time, or established connection
failed because connected host has failed to respond.
但docker-machine
将机器列为正在运行:
> docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100:2376
我还可以在VirtualBox中确认VM屏幕似乎处于活动状态。
我尝试启动和停止机器,但这没有帮助
C:\x> docker-machine stop default
C:\x> docker-machine start default
Starting VM...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
C:\x> docker-machine env default --shell=powershell
具有讽刺意味的是,最后一个命令挂起,因此我从未获得任何环境设置。
唯一有用的是重启整个PC。但这应该是不必要的?
我也将其发布为an issue on the docker github repository,但已关闭。 A related issue seems to be this one,但没有针对Windows发布解决方法或解决方案。
答案 0 :(得分:13)
在与VirtualBox + Docker Toolbox战斗之后,我终于找到了方法,如何让Docker再次工作(即使没有重新启动所有容器):
docker images
(不会工作)docker images
(现在应该可以使用)请注意:所有步骤仅在VirtualBox中!运行docker-machine restart default
将创建另一个仅限主机的适配器,这是您不想要的。如果您仍然这样做,请删除所有另外创建的适配器(文件 - >偏好设置> VirtualBox上的网络),然后按照步骤1-5进行操作。
答案 1 :(得分:6)
我在Windows 8.1上遇到了完全相同的症状......问题是它并不是特定于Docker的问题,而是更多Windows如何在睡眠后管理VirtualBox网络适配器(我认为... )。在我的情况下,罪魁祸首是网络适配器的地址在睡眠后变为私有(它们变为169. *地址)。
这个给我这个想法的人的信用:http://lyngtinh.blogspot.ca/2011/12/how-to-disable-autoconfiguration-ipv4.html
修正:
ipconfig /all
。在我的案例中,有用的是标有" VirtualBox Host-Only Ethernet Adapter"没有私人ips(不以169。*开头)。netsh interface ipv4 show inter
。netsh interface ipv4 set interface <idx> dadtransmits=0 store=persistent
。替换&lt; idx&gt;在上一步中找到每个索引。之后,我能够docker-machine start default
,然后docker-machine env default --shell cmd
让PC进入睡眠状态,唤醒并再次运行docker-machine env default --shell cmd
。
答案 2 :(得分:2)
在这里尝试了所有其他答案,并且具有不同但不一致的成功之后,以下似乎可以在发生此问题后可靠地将它带回来。
打开一个powershell /命令窗口(如果我在以管理员身份打开的PowerShell窗口中运行所有docker-machine命令,我最成功,我不知道这是否重要)然后运行(其中“dev”是您的泊坞机器实例的名称):
docker-machine ssh dev
然后在打开的终端上运行:
sudo shutdown -r now
当机器重新启动时,它似乎刷新网络并正常工作。但请注意,仅仅运行docker-machine restart dev
不对我有同样的效果。
您的计算机需要先运行才能执行ssh,因此如果它没有运行,请在尝试SSH之前执行docker-machine start dev
。
答案 3 :(得分:0)
在Windows 8.1和docker toolbox 1.12.0上遇到同样的问题 上述解决方案也不适用于我。
[编辑]
找到另一种在系统唤醒后使docker工作的方法:
Ctrl-C
(如果它仍在运行)docker-compose down
docker-machine stop default
Ctrl-D
答案 4 :(得分:0)
这适用于我在Windows主机上。
将网络适配器配置为
1)允许网络适配器唤醒计算机,
2)允许魔术包唤醒计算机,
3)允许IPV6
http://www.worldstart.com/dropped-internet-connection-in-sleep-mode/
此外,在虚拟盒网络设置上,转到高级,允许混杂模式到VM计算机,或允许所有