在Kubernetes(K8S)这个容器编排平台中,镜像是容器运行的基础,而Docker是目前最常用的容器技术之一,因此理解K8S镜像和Docker镜像之间的关系是非常重要的。下面我将介绍如何在K8S中使用Docker镜像。

**整体流程:**

| 步骤 | 操作 |
|--------|-------|
| 1 | 创建Docker镜像 |
| 2 | 上传Docker镜像到Docker Hub 或 私有仓库|
| 3 | 在K8S集群中部署使用Docker镜像 |

**具体操作步骤:**

**步骤一:创建Docker镜像**

下面是一个简单的Node.js应用示例,假设你已经在本地编写好该应用,并添加了Dockerfile来构建Docker镜像。

```Dockerfile
# 使用Node.js官方镜像作为基础镜像
FROM node:14

# 设置工作目录
WORKDIR /app

# 复制本地应用到工作目录
COPY package*.json ./
COPY . .

# 安装项目依赖
RUN npm install

# 暴露端口
EXPOSE 3000

# 启动应用
CMD ["node", "app.js"]
```

在应用根目录下运行以下命令构建Docker镜像:

```bash
docker build -t my-nodejs-app .
```

这将构建一个名为my-nodejs-app的Docker镜像。

**步骤二:上传Docker镜像到Docker Hub 或 私有仓库**

登陆Docker Hub账号:

```bash
docker login
```

将构建好的Docker镜像推送到Docker Hub:

```bash
docker tag my-nodejs-app your-docker-username/my-nodejs-app
docker push your-docker-username/my-nodejs-app
```

这样就将Docker镜像上传到Docker Hub,你也可以将镜像推送到私有仓库。

**步骤三:在K8S集群中部署使用Docker镜像**

创建一个K8S Deployment文件(deployment.yaml)来部署这个应用:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nodejs-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-nodejs-app
template:
metadata:
labels:
app: my-nodejs-app
spec:
containers:
- name: my-nodejs-app
image: your-docker-username/my-nodejs-app
ports:
- containerPort: 3000
```

使用kubectl命令来创建Deployment:

```bash
kubectl apply -f deployment.yaml
```

这样,K8S集群将会启动3个副本的应用容器,使用你推送到Docker Hub的镜像。

总结:通过以上步骤,你学会了如何在Kubernetes中使用Docker镜像。首先,你需要创建一个Docker镜像,并将其推送到Docker Hub或私有仓库,然后在K8S集群中创建Deployment来部署应用容器。希望这篇文章对你有所帮助,如果有任何问题,欢迎随时向我请教!