【问题标题】:On Windows Setup, how can I get docker image from local machine在 Windows 安装程序上,如何从本地计算机获取 docker 映像
【发布时间】:2018-06-30 19:25:41
【问题描述】:

我可以理解,从本地机器访问 docker 镜像到 Minikube VM 的不同方法。

(Kubernetes + Minikube) can't get docker image from local registry

所有这些示例均适用于 Mac/Linux 用户。

我正在寻找适用于 Windows 用户的等效建议。

windows 相当于什么 -> eval $(minikube docker-env)

【问题讨论】:

  • 您找到解决方法了吗?

标签: docker kubernetes minikube


【解决方案1】:

我发现通过在 PowerShell 中运行以下命令将 docker 客户端(docker-machine)指向 minikube 的 docker 环境相对简单 ->

PS C:\Users\ABC> minikube docker-env

PS C:\Users\ABC> minikube docker-env |调用表达式

【讨论】:

  • 我从 powershell 尝试了相同的命令。它对我不起作用。 PS C:\tools\cloud> minikube docker-env $Env:DOCKER_TLS_VERIFY = "1" $Env:DOCKER_HOST = "tcp://172.27.61.204:2376" $Env:DOCKER_CERT_PATH = "C:\Users\sswain\. minikube\certs" $Env:DOCKER_API_VERSION = "1.35" # 运行这个命令来配置你的 shell: # & minikube docker-env |调用表达式 PS C:\tools\cloud> & minikube docker-env |调用表达式
  • minikube docker-env | Invoke-Expression 似乎只在 PowerShell 中有效。在其他终端中,需要读取 minikube docker-env 返回的最后一行。例如,在 IntelliJ 中,它是 @FOR /f "tokens=*" %i IN ('minikube -p minikube docker-env') DO @%i 必须始终在构建 docker 映像之前在任何新终端/会话中执行此操作.
【解决方案2】:

您可以在命令提示符下使用以下命令,

@FOR /f "tokens=*" %i IN ('minikube -p minikube docker-env') DO @%i

其实当你运行minikube docker-env这个命令时,它会告诉你如何连接,

【讨论】:

    【解决方案3】:

    就像 manvedra 所说,这些步骤也对我有用。在 powershell 命令提示符下运行以下命令:

    minikube start,启动 minikube 集群。

    minikube docker-env,它将配置一些环境变量,并在底部显示最后一个要运行的命令。

    minikube -p minikube docker-env | Invoke-Expression,最后一步。

    完成。

    【讨论】:

    • 我是 Windows 用户,在运行上述命令 PS C:\WINDOWS\system32> docker build -t dhruv/posts:0.0.1 . unable to prepare context: unable to evaluate symlinks in Dockerfile path: CreateFile C:\Windows\System32\Dockerfile: The system cannot find the file specified 后尝试构建映像时出现此错误
    • 嗨 @SherryJain 可以请检查 Dockerfile 是否存在于您正在运行 docker build 命令的当前目录中。根据您的消息,我认为它尝试在 C:\WINDOWS\system32 中找到 dockerfile。您应该位于 Dockerfile 所在的目录或使用 -f 指定另一个路径,例如: docker build -t dhruv/posts:0.0.1 。 -f
    【解决方案4】:

    同样的错误,这个解决方案对我不起作用。

    我找到了这个解决方案here

    你应该单独安装docker:

    1. 下载 choco 并提供帮助
    2. 安装 docker-desktop
    3. 重新启动整个机器(不要原谅这样做!)
    4. 现在您可以从命令行使用 docker 做任何您想做的事情

    【讨论】:

      【解决方案5】:

      晚会有点晚,但您可以在 Windows 上执行此操作:

      minikube 缓存添加 alpine:latest

      这告诉我它已被弃用。

      所以最后使用这个:- minikube image load imagename

      其中 imagename 是 docker 守护进程的镜像名称

      参考:https://minikube.sigs.k8s.io/docs/commands/image/#minikube-image-load

      【讨论】:

        【解决方案6】:

        这些是基本上你必须运行的 3 个命令 -

        minikube 启动 minikube docker-env & minikube -p minikube docker-env |调用表达式

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        【解决方案7】:

        windows 相当于什么 -> eval $(minikube docker-env)

        要么docker-machine env my-default

        @FOR /f "tokens=*" %i IN ('docker-machine env YOURMACHINENAME') DO @%i

        【讨论】:

        • 谢谢,尝试了这两个命令,尽管 localhost docker cli 仍然指向其默认的 docker 守护程序,但它们没有产生任何错误。我的期望是,在成功执行上述命令后,docker-cli 应该指向 minikube docker daemon。还缺少什么?
        • 我不确定你想做什么......你的意思是 docker-cli 应该指向 minikube docker daemon ..?
        • 我有一台 windows 机器,使用 Docker Toolbox 创建 Docker 镜像等。在同一台机器上,我还安装了 Minikube。 Minikube 和 Docker Toolbox 都带有自己的默认 Docker 守护程序。我想将我机器的 docker 客户端指向 Minikube docker daemon。这样,不需要从本地 docker repo 不必要地推拉镜像。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多