我正在尝试在以下软件堆栈上部署 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/