Minikube 中如何使用本地的 Docker 镜像?

三种方式让 Minikube 用上本地镜像:minikube image load 载入、eval $(minikube docker-env) 直接用其守护进程构建、minikube image build。同时把 imagePullPolicy 设为 IfNotPresent/Never 防止去仓库拉取。

最佳实践
Minikube 中如何使用本地的 Docker 镜像?封面

最快方式:minikube image load my-image 把宿主机本地镜像直接注入 Minikube。注意还要把 Deployment 的 imagePullPolicy 设为 IfNotPresent(或 Never)——否则 K8s 仍会尝试去远端仓库拉取,本地镜像用不上。

方式一:minikube image load(直给)

# 宿主机正常构建
docker build -t my-image .

# 注入 Minikube
minikube image load my-image

# 确认
minikube image ls | grep my-image

方式二:共用 Minikube 的 Docker 守护进程

把当前终端的 docker 客户端指向 Minikube 内部的 Docker:

eval $(minikube docker-env)
docker build -t my-image .    # 直接构建进 Minikube
docker images                 # 看到的是 Minikube 里的镜像

# 用完切回宿主机
eval $(minikube docker-env -u)

构建产物天然在 Minikube 里,省了 load 一步;注意别在这个终端误操作生产镜像。

方式三:minikube image build

minikube image build -t my-image .

不走宿主机 Docker,由 Minikube 直接构建。

Deployment 里的关键配置

spec:
  containers:
    - name: app
      image: my-image          # 不带仓库前缀、别用 latest
      imagePullPolicy: IfNotPresent   # 或 Never

两个细节:

  • 镜像名带 :latest 时 K8s 默认策略是 Always(总是去拉),本地镜像就被无视了——显式写 IfNotPresent 或换具体标签
  • 镜像名不要带仓库域名前缀,避免被解析成远端仓库

观测云对照

本地集群同样可观测。 Minikube 里也能部署 DataKit(DaemonSet),联调阶段就把日志、指标、链路打通,"上测试环境才发现采不到"的问题提前暴露。

常见问题(FAQ)

Q:Pod 报 ErrImagePull / ImagePullBackOff?
A:imagePullPolicy 是 Always 或镜像名带仓库前缀;改成 IfNotPresent 并确认 minikube image ls 里有该镜像。

Q:load 进去改了代码要重来吗?
A:要。重新 build(注意换标签或强制覆盖)再 minikube image load,然后重启 Pod。

Q:多节点 Minikube 怎么办?
A:minikube image load 会处理到各节点;大集群本地开发可以考虑 minikube addons enable registry 跑集群内仓库。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台