首页 > 解决方案 > 运行 Minikube build-env 后无法构建 docker 镜像

问题描述

我在 Windows 10 中使用 Minikube,我想使用本地构建的 Docker 映像而不是托管在注册表中的映像,因此,根据本教程,我必须运行下一个命令:

使用本地 Kubernetes 和镜像:

> minikube docker-env

输出是:

PS C:\WINDOWS\system32> minikube docker-env
$Env:DOCKER_TLS_VERIFY = "1"
$Env:DOCKER_HOST = "tcp://10.98.38.126:2376"
$Env:DOCKER_CERT_PATH = "C:\Users\MyUser\.minikube\certs"
# Run this command to configure your shell:
# & minikube docker-env | Invoke-Expression

要配置 shell,请运行以下命令:

> & minikube docker-env | Invoke-Expression

之后,我需要构建一个新图像:

PS D:\repos\test> docker build -t miImage:v1 .

我有下一个错误:

PS D:\repos\test> docker build -t miImage:v1 .
Sending build context to Docker daemon   8.62MB
Step 1/10 : FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
Get https://mcr.microsoft.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

这是由于我将其配置为使用本地图像而引发的错误,有什么办法可以解决吗?

标签: windowsdockerkubernetesminikube

解决方案


看起来您用来构建的机器无法访问https://mcr.microsoft.com/v2/以确认这一点,请尝试向 URL 发送一个简单的 GET

wget https://mcr.microsoft.com/v2/

如果这是问题所在,您可以使用另一台机器来拉取图像,然后将其保存到文件并加载到目标机器上。

#on a machine connected to internet 
docker pull mcr.microsoft.com/dotnet/core/sdk:2.2
docker save mcr.microsoft.com/dotnet/core/sdk:2.2 > dotnetsdk2_2.tar
# download the file
# on the target machine 
docker load < dotnetsdk2_2.tar

那么您的构建应该可以使用本地版本的图像正常工作。


推荐阅读