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
...
配置步骤
- 执行
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)
- 应用配置(关键步骤):
$ 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镜像加载命令
操作流程
在本地构建镜像:
$ docker build -t second-image -f ./Dockerfile .
加载到Minikube:
$ minikube image load second-image
验证镜像是否可用:
$ minikube image ls --format table
创建Pod:
$ kubectl run second-container --image=second-image --image-pull-policy=Never --restart=Never
检查日志:
$ kubectl logs second-container
预期输出:
Hello World
5. Minikube镜像构建命令
直接构建方案
在Minikube内构建镜像:
$ minikube image build -t third-image -f ./Dockerfile .
启动容器:
$ kubectl run third-container --image=third-image --image-pull-policy=Never --restart=Never
验证结果:
$ kubectl logs third-container
预期输出:
Hello World
6. 总结
本文介绍了三种在Minikube中使用本地Docker镜像的方案:
- CLI重定向:通过
docker-env
将Docker CLI指向Minikube内部引擎 - 镜像加载:使用
minikube image load
导入预构建镜像 - 原地构建:通过
minikube image build
直接在集群内构建
方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
docker-env | 开发调试 | 操作直观 | 需手动配置环境 |
image load | 已有镜像快速部署 | 支持复杂构建流程 | 需本地Docker环境 |
image build | 简单镜像快速迭代 | 无需本地Docker | 构建环境受限 |
✅ 最佳实践:开发阶段推荐docker-env
,生产环境建议使用镜像仓库。