【问题标题】:Unable to connect to running docker containers (minikube docker daemon)无法连接到正在运行的 docker 容器(minikube docker daemon)
【发布时间】:2020-01-31 02:06:58
【问题描述】:

当我使用 Docker Desktop for Windows 运行我的 docker 容器时,我可以使用

连接到它
docker run -p 5051:5000 my_app

http://0.0.0.0:5051

但是当我打开另一个终端并执行此操作时

minikube docker-env | Invoke-Expression

并使用与上述相同的运行命令构建和运行相同的容器

我无法连接到正在运行的实例。

我是否应该使用 Docker Desktop 运行和测试容器,然后使用 minikube 仅存储图像(对于 Kubernetes)?或者你可以通过 minikube 运行它们并测试它们吗?

【问题讨论】:

  • 你有什么特别的理由在一台机器上同时使用 Docker DesktopMinikube 吗?
  • @mario 不,直到最近我才知道 minikube 有一个 docker 守护进程,这就是为什么我两者都有

标签: docker minikube


【解决方案1】:

这是因为在您第二次尝试时,容器没有在主机上运行,​​而是在 minikube 虚拟机上运行。您将能够使用 minikube VM IP 访问它。
要获取 minikube ip,您可以运行 minikube ip

为什么?

调用 minikube docker-env 设置主机上的所有 docker 环境变量以匹配 minikube 环境。这意味着当您在此之后运行容器时,它会与 minikube VM 上的 docker 守护进程一起运行。

【讨论】:

  • 所以在运行容器后,我会像http://<minikubeip>:5051一样访问它?
  • 是的。可以肯定的是,您可以使用minikub ssh 连接到 minikube 并尝试查看您的容器是否在您的 vm 中运行。
【解决方案2】:

我问你是否有任何特定的理由在一台机器上同时使用 Docker DesktopMinikube,因为这是两个具有竞争力的解决方案,基本上可以让你执行类似的操作任务并实现相同的目标。

This 文章很好地解释了这两个工具之间的区别。

Docker-for-windows 使用 Type-1 管理程序,例如 Hyper-V,它们是 与类型 2 管理程序(例如 VirtualBox)相比更好,同时 Minikube 支持这两种管理程序。不幸的是,有一对 您正在使用的技术的限制,因为您不能 在您的计算机上同时运行 Type-1 或 Type-2 管理程序 机器

如果您同时使用 Docker DesktopMinikube,我假设您使用的是 Type-1 虚拟机管理程序,例如提到的 Hyper-V,但请记住即使他们使用相同的管理程序,两个工具也会创建自己的虚拟机实例。基本上,您不应该同时使用这两个工具,期望它们可以作为一种混合方式工作,让您管理单个容器环境。

首先检查您正在使用的虚拟机管理程序。如果您使用的是 Hyper-V,Powershell 中的简单 Get-VM 命令(this 文章中的更多详细信息)应该会告诉您当前拥有什么。

@mario 不,直到最近我才知道 minikube 有一个 docker 守护进程 这就是为什么我两者都有

是的,Minikube 已经内置了 docker 环境(实际上它设置了所有东西,但是是的,它还设置了容器运行时)所以基本上你不需要额外安装 docker,并且作为@Marc ABOUCHACRA 在他的回答中已经建议,Minikube 在单独的 VM 上运行整个环境(具有 docker runtime 的单节点 k8s 集群)。 Linux 版本有一个选项 --vm-driver=none,它允许您使用主机 容器运行时 并在其上设置 k8s 组件,但 Windows 版本不是这种情况 - 在这里您只能使用其中一个目前支持的两个管理程序:Hyper-VVirtualBox (ref)。

我不会说 Docker Destkop 在您的主机上运行一切。它还使用 Type-1 管理程序来运行容器运行时环境。请检查您计算机上的Get-VM 命令,并清楚您拥有哪些虚拟机以及由哪个工具创建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2019-06-01
    • 2017-08-11
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多