【问题标题】:Docker machine timeout - how to fix without destroying the machine?Docker 机器超时 - 如何在不破坏机器的情况下修复?
【发布时间】:2016-09-01 08:52:50
【问题描述】:

我的 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

尝试的解决方案

我已经尝试过以下事情,没有特别的顺序:

  • 正在重新启动 docker 机器。
  • 正在运行eval "$(docker-machine env default)"
  • 重新生成证书docker-machine regenerate-certs default
  • 正在重新启动我的主机箱。
  • 升级 Docker。
  • 重新安装 Docker。
  • 正在升级 VirtualBox。
  • 删除所有 VirtualBox 仅限主机的网络设备。

破解

现在唯一对我有用的是销毁 docker 机器并重新创建它。这会破坏我所有的图像和容器,并且重新设置它非常耗时。

docker-machine rm -y default && docker-machine create -d virtualbox default && eval $(docker-machine env)

有什么我可以尝试的吗?谢谢!


更新:5 月 9 日(复制步骤)

我可以通过以下步骤可靠地重现此问题:

  1. 从新创建的 Docker 机器开始。
  2. 使用docker-compose up 构建一些容器。
  3. 关闭运行容器的计算机。
  4. 重启后,由于 Docker 机器超时,Docker CLI 无法工作。

【问题讨论】:

  • docker-machine ssh 默认工作吗?
  • 所以像 docker ps 这样的命令不起作用?但是 ssh 有效吗?
  • 尝试切换到新的docker (beta) 解决方案
  • 是的,没错。
  • 我遇到了完全相同的问题。可以 ssh,但无法激活。

标签: macos docker timeout virtualbox docker-machine


【解决方案1】:

这个命令对我来说适用于 digitalocean 驱动程序:

docker-machine ls -t 20

好像default timeout of 10 seconds 太短了。

【讨论】:

  • 可惜没有用于此超时的环境变量。每次都必须添加(或创建别名/shell函数)很痛苦。
【解决方案2】:

这通常是与您启动和停止机器的方式有关的问题。

你可以用

解决它
  1. $ docker-machine stop default
  2. $ docker-machine start default
  3. $ docker-machine regenerate-certs default

不要使用docker-machine restart default,因为它不会刷新您的网络配置。

【讨论】:

  • 对我不起作用,但更重要的是...停止/启动和重新生成需要很长时间。
【解决方案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

【讨论】:

  • 多么救命啊!我打开了我的 VPN,并在过去 2 小时内解决了这个问题!
【解决方案4】:

我在 Docker 版本 1.11.2 中遇到了同样的问题,构建 b9f10c9

这对我有用 - 我的 docker 机器回到了运行状态

  1. $ docker-machine restart
  2. $ eval $(docker-machine env)

【讨论】:

    【解决方案5】:

    到目前为止,我有一个 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)
    

    说明

    • 销毁默认的 docker 机器、容器和图像。
    • 在 VirtualBox 上创建一个新的 docker 机器并停止它,以便我们可以修改 VirtualBox。
    • 为 VirtualBox 上的各种应用程序添加端口转发。
    • 启动 docker 机器。
    • 确保为 docker 机器的新 IP 地址设置终端。

    【讨论】:

      【解决方案6】:

      我的问题很简单。我用我的 ufw 防火墙阻止了端口 2376。 Docker-machine 需要打开这个端口才能连接到远程。

      I found the answer to my problem in on this page:

      【讨论】:

        【解决方案7】:

        我已打开 virtualbox 并手动关闭并启动所有 vm/。状态又是running

        【讨论】:

        • 请升级到最新版本的Docker,这个问题早就解决了。
        • 我有 Docker 版本 1.13.1,构建 092cba3 每当我将我的 linux mint 置于休眠状态时都会出现此问题
        【解决方案8】:

        这对我有用,我的容器没有被破坏:

        1. 打开 Oracle 虚拟机并暂停 VM
        2. 在 docker 机器上重新启动 VM

        $ docker-machine restart default

        • 码头工人版本:1.12.3
        • docker-machine 版本:0.8.2,构建 e18a919

        【讨论】:

        • 嗨@tej,如果您升级到最新版本的 Docker,这不再是问题。您根本不再需要使用 Virtual Box。
        【解决方案9】:

        我的问题非常简单 - 我在重新启动 docker 机器后立即执行了docker machine ls 命令,所以它还没有运行,导致超时。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-12
          • 2016-04-29
          • 2020-06-24
          • 1970-01-01
          • 1970-01-01
          • 2013-01-26
          • 2021-12-23
          相关资源
          最近更新 更多