docker - Docker Desktop 上的 Kubernetes 无法识别本地镜像

标签 docker kubernetes docker-desktop

我正在尝试在以下软件堆栈上部署 Windows 容器镜像

Windows 10 Pro + Docker Desktop + Embedded Kubernetes in docker desktop

由于某种原因'embedded kubernetes'无法识别'local images'无论如何--image-pull-policy已设置

Docker 镜像

PS C:\WINDOWS\system32> docker images
REPOSITORY                             TAG        IMAGE ID       CREATED        SIZE
myimg                                  final      90c09acbfc59   15 hours ago   5.45GB

Kubectl 运行

PS C:\WINDOWS\system32> kubectl run --image=myimg:final tskuberun

Pod 输出

Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  25s                default-scheduler  Successfully assigned default/tskuberun to docker-desktop
  Normal   BackOff    23s (x2 over 24s)  kubelet            Back-off pulling image "myimg:final"
  Warning  Failed     23s (x2 over 24s)  kubelet            Error: ImagePullBackOff
  Normal   Pulling    9s (x2 over 25s)   kubelet            Pulling image "myimg:final"
  Warning  Failed     8s (x2 over 25s)   kubelet            Failed to pull image "myimg:final": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.65.5:53: no such host
  Warning  Failed     8s (x2 over 25s)   kubelet            Error: ErrImagePull

但是,当我执行 docker run 时,它会拉取本地镜像。以下工作按预期进行

PS C:\WINDOWS\system32> docker run myimg:final

我用 google 搜索了答案,但大多数链接都与 Unix 风格和 Minikube 相关。

只有少数链接与Docker desktop + embedded kubernetes相关。 ,但不幸的是没有解决这个问题

我正在努力摆脱这个问题。非常感谢任何帮助

编辑

经过进一步调查,我发现'Docker desktop'指的是本地镜像,如果我选择了选项 "Switch to Linux Containers"

针对 Linux 镜像运行 Kubectl

PS C:\WINDOWS\system32> kubectl run --image=wphp --image-pull-policy=IfNotPresent lntest


PS C:\WINDOWS\system32> kubectl describe pod/lntest

Events:
  Type     Reason     Age               From               Message
  ----     ------     ----              ----               -------
  Normal   Scheduled  40s               default-scheduler  Successfully assigned default/lntest to docker-desktop
  Normal   Pulled     2s (x4 over 39s)  kubelet            Container image "wphp" already present on machine
  Normal   Created    2s (x4 over 39s)  kubelet            Created container lntest
  Normal   Started    2s (x4 over 39s)  kubelet            Started container lntest

看来此问题仅发生在“Windows 容器”上,即如果我选择了选项 'Switch to Windows Containers',则 Docker 桌面不会引用本地镜像。

最佳答案

尽管 imagePullPolicy: never 应该可以满足您的要求,但可能存在一些与证书相关的问题。

由于这些问题,我个人避免使用本地构建的 Docker 镜像。

您可以尝试将 docker Push 集成到您的工作流程中的 docker hub 或在您的 kubernetes 集群中构建 docker 注册表,例如使用https://www.linuxtechi.com/setup-private-docker-registry-kubernetes/

关于docker - Docker Desktop 上的 Kubernetes 无法识别本地镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68042921/

相关文章:

docker - 在不旋转容器的情况下挤压 docker 镜像

kubernetes - 在kubernetes上使用Kafka-connect时,pod的缩减规模并不理想

amazon-web-services - 如何使用 Ansible Tower/AWX 将 Kubernetes YAML 文件应用到 AWS EKS?

kubernetes - 如何在Kubernetes仪表板中将基本身份验证模式设置为基于 token 的身份验证?

docker - 如何在docker中列出可用的存储驱动程序?

php - 在 Mac OS 上设置 docker - 无法安装 php-intl

Docker - centos :7 kernel-header 3. 10.0 漏洞 -> 该怎么办?

docker - 使用 Docker for Mac 创建 swarm 集群

docker - 如何在本地访问 nginx 入口?

docker - 如何配置 docker/docker-compose 默认使用 Nexus 而不是 docker.io?