1. 概述

本教程将演示如何在Kubernetes中部署Docker容器,并重点讲解如何使用本地镜像。我们将使用Minikube作为本地Kubernetes集群环境。以下是三种核心实现方式:

  • ✅ 通过docker-env配置Docker CLI
  • ✅ 使用minikube image load加载预构建镜像
  • ✅ 直接在Minikube内构建镜像

2. Dockerfile

首先需要创建Dockerfile来构建本地镜像。为简化演示,我们使用一个仅包含echo命令的基础镜像:

FROM alpine 

CMD ["echo", "Hello World"]

3. docker-env命令

前置条件

确保Docker CLI已安装。验证安装状态:

$ docker version

预期输出类似:

Client: Docker Engine - Community
 Version:           19.03.12
 ...

Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  ...

配置步骤

  1. 执行minikube docker-env查看配置命令:
    $ minikube docker-env
    

输出示例:

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://172.22.238.61:2376"
export DOCKER_CERT_PATH="/home/user/.minikube/certs"
export MINIKUBE_ACTIVE_DOCKERD="minikube"

# To point your shell to minikube's docker-daemon, run:
# eval $(minikube -p minikube docker-env)
  1. 应用配置(关键步骤):
    $ eval $(minikube -p minikube docker-env)
    

验证与使用

  • 检查Minikube内镜像列表:
    $ minikube image ls --format table
    

输出表格示例:

|-----------------------------------------|---------|---------------|--------|
|                  Image                  |   Tag   |   Image ID    |  Size  |
|-----------------------------------------|---------|---------------|--------|
| docker.io/kubernetesui/dashboard        | <none>  | 1042d9e0d8fcc | 246MB  |
| k8s.gcr.io/coredns/coredns              | v1.8.6  | a4ca41631cc7a | 46.8MB |
| ...                                     | ...     | ...           | ...    |
|-----------------------------------------|---------|---------------|--------|
  • 构建镜像并运行Pod:

    $ docker build -t first-image -f ./Dockerfile .
    $ kubectl run first-container --image=first-image --image-pull-policy=Never --restart=Never
    
  • 验证输出:

    $ kubectl logs first-container
    

    预期结果:Hello World

⚠️ 注意:关闭终端后配置会失效,后续示例需重新配置。

4. Minikube镜像加载命令

操作流程

  1. 在本地构建镜像:

    $ docker build -t second-image -f ./Dockerfile .
    
  2. 加载到Minikube:

    $ minikube image load second-image
    
  3. 验证镜像是否可用:

    $ minikube image ls --format table
    
  4. 创建Pod:

    $ kubectl run second-container --image=second-image --image-pull-policy=Never --restart=Never
    
  5. 检查日志:

    $ kubectl logs second-container
    

    预期输出:Hello World

5. Minikube镜像构建命令

直接构建方案

  1. 在Minikube内构建镜像:

    $ minikube image build -t third-image -f ./Dockerfile .
    
  2. 启动容器:

    $ kubectl run third-container --image=third-image --image-pull-policy=Never --restart=Never
    
  3. 验证结果:

    $ kubectl logs third-container
    

    预期输出:Hello World

6. 总结

本文介绍了三种在Minikube中使用本地Docker镜像的方案:

  1. CLI重定向:通过docker-env将Docker CLI指向Minikube内部引擎
  2. 镜像加载:使用minikube image load导入预构建镜像
  3. 原地构建:通过minikube image build直接在集群内构建
方法 适用场景 优点 缺点
docker-env 开发调试 操作直观 需手动配置环境
image load 已有镜像快速部署 支持复杂构建流程 需本地Docker环境
image build 简单镜像快速迭代 无需本地Docker 构建环境受限

最佳实践:开发阶段推荐docker-env,生产环境建议使用镜像仓库。


原始标题:Using Local Docker Images With Minikube