1、安装Docker Desktop
docker desktop官方下载链接,下载后一路点下来安装就好了。
2、制作本地镜像
跟着docker步骤制作镜像,需要先配置docker 镜像源,因为网络问题
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"debug": true,
"dns": [
"8.8.8.8",
"8.8.4.4"
],
"experimental": false,
"features": {
"buildkit": false
},
"insecure-registries": [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"registry-mirrors": [
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://dockerproxy.com",
"https://gst6rzl9.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"http://mirrors.ustc.edu.cn/",
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/"
]
}
git clone https://github.com/docker/welcome-to-docker
cd welcome-to-docker
检查dockerfile,并执行
docker build -t welcome-to-docker .
制作好之后,images列表就有了:
3、在docker desktop运行镜像
在Images列表,找到镜像,点击三角形run,指定端口,就可用运行。
例如名字是hello-docker,端口是8090,运行后,就会在Containers中出现,可查看日志、执行命令。
3、开启Kubenetes
如果需要Kubenetes管理镜像,可用在docker desktop开启,因为网络原因,要从阿里云镜像源下载kubenetes的镜像。
clone k8s-for-docker-desktop 这个项目,找到 load_images.ps1
这个 powershell 文件,直接运行,
在powershell中执行
./load_images.ps1
如果没有权限,可用先执行
Set-ExecutionPolicy RemoteSigned
images.properties
文件中列到的镜像可以看到kubenetes的版本,注意要与Docker Desktop的相同。
这样就把kubenetes的镜像拉下来了。
然后点击设置,启用Kubenetes
Apply&Restart之后,左下角就看见Kubenetes running了。
4、在Kubenetes运行镜像
刚刚制作的镜像要在kubenetes运行,就需要一个k8s.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-docker-deployment # 部署的名称
namespace: default
labels:
app: hello-docker # 给资源打标签,便于筛选和管理
spec:
replicas: 2 # 定义副本数量以确保高可用
selector:
matchLabels:
app: hello-docker # 匹配 Pod 的标签,确保服务与 Pod 绑定
template:
metadata:
labels:
app: hello-docker # Pod 的标签,需与 selector 对应
spec:
containers:
- name: hello-docker # 容器名称
imagePullPolicy: Never
image: welcome-to-docker:latest # 使用构建的镜像名称和标签,从远程仓库拉取镜像
ports:
- containerPort: 3000 # 容器内部监听的端口
env:
- name: FLASK_APP
value: "app.py" # 设置 Flask 的主程序文件
- name: FLASK_ENV
value: "production" # 设置 Flask 的运行环境
- name: PYTHONDONTWRITEBYTECODE
value: "1" # 禁止生成 .pyc 文件
- name: PYTHONUNBUFFERED
value: "1" # 设置 Python 日志为非缓冲模式
resources: # 资源限制
requests:
memory: "128Mi" # 请求的最小内存
cpu: "250m" # 请求的最小 CPU
limits:
memory: "256Mi" # 最大允许使用的内存
cpu: "500m" # 最大允许使用的 CPU
livenessProbe: # 存活探针,用于检测服务是否存活
httpGet:
path: "/" # 检测的路径
port: 3000 # 检测的端口
initialDelaySeconds: 5 # 初始延迟
periodSeconds: 10 # 检测间隔
readinessProbe: # 就绪探针,用于检测服务是否准备好接收流量
httpGet:
path: "/" # 检测的路径
port: 3000 # 检测的端口
initialDelaySeconds: 5 # 初始延迟
periodSeconds: 10 # 检测间隔
restartPolicy: Always # 容器策略:始终重启
---
apiVersion: v1
kind: Service
metadata:
name: hello-docker-service # 服务的名称
labels:
app: hello-docker # 标签与 Deployment 一致
spec:
selector:
app: hello-docker # 匹配 Deployment 的标签
ports:
- protocol: TCP
nodePort: 30008 # 可以省略,Kuberrnetes 会自动分配一个端口 范围 30000-32767
port: 3000 # 服务暴露的端口
targetPort: 3000 # 转发到容器的端口
type: NodePort # 服务类型,NodePort 通过在每个 Node 上打开一个特定端口,将外部请求转发到集群内部的Service,进而达到后端的Pod
然后执行命令即可(这里本地运行的关键是yaml的 imagePullPolicy: Never,不然就要将镜像推送到docker仓库才行)
kubectl create -f k8s.yaml
因为k8s.yaml定义了30008端口映射3000,所以使用http://localhost:30008/访问即可: