当前位置: 首页 > web >正文

Windows安装Docker Desktop开启 Kubenetes制作并部署本地镜像

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: defaultlabels: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: Neverimage: welcome-to-docker:latest  # 使用构建的镜像名称和标签,从远程仓库拉取镜像ports:- containerPort: 3000  # 容器内部监听的端口env:- name: FLASK_APPvalue: "app.py"  # 设置 Flask 的主程序文件- name: FLASK_ENVvalue: "production"  # 设置 Flask 的运行环境- name: PYTHONDONTWRITEBYTECODEvalue: "1"  # 禁止生成 .pyc 文件- name: PYTHONUNBUFFEREDvalue: "1"  # 设置 Python 日志为非缓冲模式resources:  # 资源限制requests:memory: "128Mi"  # 请求的最小内存cpu: "250m"  # 请求的最小 CPUlimits:memory: "256Mi"  # 最大允许使用的内存cpu: "500m"  # 最大允许使用的 CPUlivenessProbe:  # 存活探针,用于检测服务是否存活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: TCPnodePort: 30008  # 可以省略,Kuberrnetes 会自动分配一个端口 范围 30000-32767port: 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/访问即可:

参考资料:在 Docker Desktop 中启用 K8s 服务 - 墨墨墨墨小宇 - 博客园

http://www.xdnf.cn/news/8922.html

相关文章:

  • Java 装饰器模式(Decorator)详解​
  • AI练习:指纹
  • [C语言实战]C语言文件操作实战:打造高效日志系统(六)
  • RMAN恢复报错RMAN-06555及其解决方案
  • STM32F103_Bootloader程序开发02 - Bootloader程序架构与STM32F103ZET6的Flash内存规划
  • idea和cursor快速切换
  • 【Linux】定时任务 Crontab 与时间同步服务器
  • 基于多头注意力时间卷积网络(MATCN)的虚拟电厂短期功率预测模型
  • 『uniapp』自己实现手动图片列表滑动 + 图片手势缩放+ 图片点击缩放(详细图文注释)
  • 分布式消息中间件设计与实现
  • Android自定义View学习总结
  • 【机器人】复现 Embodied-Reasoner 具身推理 | 具身任务 深度推理模型 多模态场景 长远决策 多轮互动
  • Python Day33
  • GO 语言中变量的声明
  • Python中字典(dict)知识详解应用
  • 非接触式互连:当串扰是您的朋友时
  • NumPy 数组属性
  • 英语科研词汇现象及语言演变探讨
  • Rephrase and Respond :让大语言模型为自己提出更优的问题
  • Disruptor—3.核心源码实现分析二
  • 第十八章:数据治理之数据质量:“数据质量”不仅仅和“数据质量”有关
  • 数据库故障排查指南技术文章
  • 用 Python 构建自动驾驶的实时通信系统:让车辆“交流”起来!
  • 【Python 元祖】 Tuple 核心知识点
  • no cmake_c_compiler could be found.
  • SQL每日一练(7)
  • 动态规划-53.最大子数组和-力扣(LeetCode)
  • java 动态代理
  • 计算机系统简介(一)
  • 使用keil5实现RA4M2按键控制LED的状态