从构建 Docker 镜像到部署应用至 K8s,将初步了解如何使用容器技术。至于更深入、更复杂的容器知识,那要移步到大牛写的文章。需要注意按照下述步骤进行操作前需要先安装 Docker 和 Kubernetes,对于操作系统是 Windows 的用户可以参考文章 在 Windows 上安装 Kubernetes(K8s)。
Docker 构建镜像
新建文件 hello.py 并保存下方代码。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
新建文件 Dockerfile 并保存下方配置。
# syntax=docker/dockerfile:1
FROM ubuntu:22.04
# install app dependencies
RUN apt-get update && apt-get install -y python3 python3-pip
RUN pip install flask==3.0.*
# install app
COPY hello.py /
# final configuration
ENV FLASK_APP=hello
EXPOSE 8000
CMD ["flask", "run", "--host", "0.0.0.0", "--port", "8000"]
执行 docker build 命令构建镜像。
docker build -t hello:latest .
命令执行完成后 Docker Desktop 中将可以看到 hello 镜像。
Kubernetes 部署应用
点击 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 打开 Kubernates Dashboard 并登录。(如何启用仪表盘可以参考 在 Windows 上安装 Kubernetes(K8s))
复制下方 Deployment 配置到下方截图处并上传
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-deployment
spec:
selector:
matchLabels:
app: hello
replicas: 1 # 告知 Deployment 运行 1 个与该模板匹配的 Pod
template:
metadata:
labels:
app: hello
spec:
containers:
- name: hello
image: hello:latest
imagePullPolicy: Never # 告知 Deployment 使用本地的镜像
ports:
- containerPort: 8000
复制下方 Service 配置到下方截图处并上传
apiVersion: v1
kind: Service
metadata:
name: hello-service
spec:
selector:
app: hello
ports:
- port: 80
targetPort: 8000
type: LoadBalancer
访问部署的应用
点击 http://localhost:80 访问部署的 hello 应用。
到此完成从构建 Docker 镜像到部署应用至 K8s 的整个过程, 在此祝屏幕前的你事业有成,生活如意。
参考资料
- Docker官方文档 Packaging your software | Docker Docs
- Kubernetes官方文档 使用 Deployment 运行一个无状态应用 | Kubernetes